gpt4 book ai didi

python - Pandas:将填充有下拉菜单的 Excel 列拆分为多个数据框列并隔离拼写错误

转载 作者:行者123 更新时间:2023-12-01 09:31:17 28 4
gpt4 key购买 nike

我在 Excel 中有以下列,它是使用下拉菜单填充的。但是,添加了一些条目,禁用宏并手动输入响应。这造成了一些拼写错误。

      Answers
0 Yes #correct
1 No #correct
2 no #typo - manually entered
3 noo #typo - manually entered
4 yeah #typo - manually entered
5 Yes, No #correct (multiple entries are allowed)

我希望能够创建一个新的数据框,在其中保留原始列“答案”,但我想附加三列:"is"、“否”、“拼写错误”。如果存在值,"is"和“否”的值为 1,否则为 0。 “Typos”列应以字符串形式包含未包含在接受的答案列表中的所有内容,如果没有拼写错误,则将其分配为 0

示例输出:

      Answers   Yes    No    Typos
0 Yes 1 0 0
1 No 0 1 0
2 no 0 0 no
3 noo 0 0 noo
4 yeah 0 0 yeah
5 Yes, No 1 1 0

我的尝试包括识别“答案”列的唯一条目,如下所示:

all_answers = df['Answers'].str.get_dummies(', ')

这就是我创建附加列的方法:

accepted_ans=['Yes','No']
idx=1
for i,name in enumerate(all_answers.columns.tolist()):
if i>0:
if name in accepted_ans:
df.insert(idx+i, name, all_answers[name])

这就是我管理“拼写错误”列的方式:

df['Typos']=0 #Create empty column with all zeros
for i in range (0, len(df)): #Iterate over the rows
if df['Answers'].iloc[i] not in accepted_ans:
df['Typos'].iloc[i]=df['Answers'].iloc[i]

我的问题:“Typos”列全是零,例如上面的 if 语句失败,或者下面的行失败。我将不胜感激任何建议。

最佳答案

df = pd.DataFrame(dict(answers=['Yes', 'No', 'no', 'noo', 'yeah', 'Yes, No']))
def typos(l):
probs = [e for e in l if e not in ['Yes', 'No']]
return ', '.join(probs) if probs else 0
>>> df.answers.str.split(', ').apply(typos)
0 0
1 0
2 no
3 noo
4 yeah
5 0
Name: answers, dtype: object

如果您的列是混合类型(即并非所有条目都是字符串),您可能需要首先将其转换为字符串,即

df.answers.astype(str).str.split(', ').apply(typos)

关于python - Pandas:将填充有下拉菜单的 Excel 列拆分为多个数据框列并隔离拼写错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49954777/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com