我有一个这样的数据框:
df = pd.DataFrame()
df['vals'] = [1,2,3,4,5]
df['flagged'] = ['N','Y','N','N','Y']
修改值列(标志为“ Y”)的最惯用的方式是什么。例如,将5加到每个标记的值,以使df['vals'] == [1,7,3,4,10]
。
答案 0 :(得分:5)
重新分配
df.loc[df.flagged.eq('Y'),'vals']+=5
df
Out[220]:
vals flagged
0 1 N
1 7 Y
2 3 N
3 4 N
4 10 Y
答案 1 :(得分:4)
尝试使用.loc
:
df.loc[df['flagged'] == 'Y', 'vals'] += 5
现在:
print(df)
是:
vals flagged
0 1 N
1 7 Y
2 3 N
3 4 N
4 10 Y
答案 2 :(得分:1)
df.vals += 5 * df.flagged.eq('Y')
df
vals flagged
0 1 N
1 7 Y
2 3 N
3 4 N
4 10 Y