我必须做一个调查,然后将许多学生的答案保存在数据框中。我尝试将答案存储在列表中,但不起作用,因为当我尝试将答案保存在数据框中时,我得到的数据框在同一列中有多个答案,而不是与答案数量相同的许多行。这是我的调查
sex=input('your sex: ')
sex_list.append(sex)
country=input('where do you come from?: ')
country_list.append(country)
sport=input('have you ever play sport?: ')
sport_list.append(sport)
if sport=='no':
reason_no_sport=input('why didnt you play sport?:')
reason_no_sport_list.append(reason_no_sport)
else:
reason_no_sport=np.nan
reason_no_sport_list.append(reason_no_sport)
football=input('have you ever play football?: ')
football_list.append(football)
basket=input('have you ever play basket?: ')
basket_list.append(basket)
swimming=input('have you ever play swimming?: ')
swimming_list.append(swimming)
这是名单
sex_list=[]
country_list=[]
sport_list=[]
reason_no_sport_list=[]
football_list=[]
basket_list=[]
swimming_list=[]
这是 Dataframe
df = pd.DataFrame({"sex": [sex_list],
"country": [country_list],
"sport":[sport_list],
"why didnt you play sport?": [reason_no_sport_list],
"football":[football_list],
"basket":[basket_list],
"swimming":[swimming_list]})
这就是结果
sex=`[male, female]`
country= `[usa, england]`
2条答案
按热度按时间r7xajy2e1#
我为你的问题提供了一个可能的解决方案,我创建了一个列表,并在其中添加了答案:
输出示例:
x一个一个一个一个x一个一个二个x
你也可以创建一个列表(
name
),并请求名称,然后将其用作DataFrame
索引:name=[]
name.append(input('what is your name: '))
df.reindex(name)
gv8xihay2#
我得到的 Dataframe 在同一列中有多个答案,而不是像答案数量那样有多行
要解决这个问题,只需:
因为它们已经是列表了,所以不需要使用另一对方括号将它们 Package 到另一个列表中。
正确构建 Dataframe
但是要小心:您可能希望在最终的数据框中为每个回答调查的人分配一行,列表不会记住这一点,因为在您的调查中,您不会每次都向所有列表添加元素(您有
if else
)。要解决这个问题,你有两个办法。
1.每次向每个列表添加一个元素。编辑您的
if else
语句,以便当用户没有回答问题时,向相应的列表添加一个None
值,就像在@lostCode answer中所做的那样。1.完全不要使用列表。从头创建一个空的 Dataframe ,并将答案作为新行存储在其中。
例如,您可以执行以下操作创建空 Dataframe :
然后,每次向其他人提出调查时,在
df
的末尾添加一行None
值:然后,您可以在询问时直接编辑
df
的最后一行。例如: