修改Pandas DataFrame中的标记值

时间:2019-07-02 13:56:54

标签: python pandas

我有一个这样的数据框:

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]

3 个答案:

答案 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