这就是协议,我有这个数据框,请命名为lovely_df:
foo? fah? boo? Nice Numbers
0 foo fah boo 10
1 meh fah boo 20
2 meh fah boo 30
3 foo fah boo 40
4 meh fah boo 50
试图这样做:
lovely_df.loc[lovely_df['foo?'] == 'meh',:]['Nice Numbers'].add(1)
它向我返回:
Nice Numbers
1 21
2 31
4 51
如果将其保存到lovely_df中可以,但是没有,所以我尝试了:
lovely_df.loc[lovely_df['foo?'] == 'meh',:]['Nice Numbers'] = lovely_df.loc[lovely_df['foo?'] == 'meh',:]['Nice Numbers'].add(1)
它实际上有效,但是它给了我
<input>:1: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
就是这样,我只是想在几行的单列中添加一个特定的数字,而无需Python哭泣。
谢谢大家!
答案 0 :(得分:0)
您可以根据情况使用numpy.where
lovely_df['new_col'] = np.where(lovely_df['foo?'] == 'meh',
lovely_df['Nice Numbers'].add(1),
lovely_df['Nice Numbers'])
print(lovely_df)
foo? fah? boo? Nice Numbers new_col
0 foo fah boo 10 10
1 meh fah boo 20 21
2 meh fah boo 30 31
3 foo fah boo 40 40
4 meh fah boo 50 51