我有已导出到 Excel 的问卷数据。我目前正在尝试清理数据,但遇到了问题。它在调查软件中的编号从 1.1 到 1.12,但是当它导出到 Excel 时,它会更改为 1.10 到 1.1。所以我最终得到两个编号均为 1.1 的问题。我希望能够重新编号应该为 1.10 的问题数据看起来像这样data = [[1, '1.1', 'first'], [1, '1.2', 'yes'], [1, '1.1', 'daily'], [2, '1.1', 'last'], [2, '1.2', 'yes'], [2, '1.1', 'weekly']]df = pd.DataFrame(data, columns = ['user_id', 'question', 'answer'])我希望它看起来像这样data2 = [[1, '1.1', 'first'], [1, '1.2', 'yes'], [1, '1.10', 'daily'], [2, '1.1', 'first'], [2, '1.2', 'yes'], [2, '1.10', 'weekly']]df2 = pd.DataFrame(data2, columns = ['user_id', 'question', 'answer'])我试过这个if df[(df.question == '1.1')]: if df[(df.answer == 'first')]: df.question == '1.1' else: df.question == '1.10'但得到这个错误ValueError:DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。有什么帮助吗?
2 回答
![?](http://img1.sycdn.imooc.com/545847d40001cbef02200220-100-100.jpg)
神不在的星期二
TA贡献1963条经验 获得超6个赞
这应该有效:
df.loc[(df['answer']!='first') & (df['question']=='1.1'),'question'] = '1.10'
![?](http://img1.sycdn.imooc.com/54586431000103bb02200220-100-100.jpg)
炎炎设计
TA贡献1808条经验 获得超4个赞
尝试这个:
df['question'] = df.apply(lambda row: '1.10' if (row['question'] == '1.1' and row['answer'] != 'first') else row['question'], 1)
我们正在做的是构建一个函数,lambda
该函数接受数据帧的单行,如果问题是 1.1 并且答案不是“first”,则返回“1.10”,否则返回现有问题值。然后,我们通过将该函数应用于数据帧来生成一列,并用该列替换我们已有的问题。
添加回答
举报
0/150
提交
取消