如何为熊猫的特定行和列添加值?

时间:2020-04-30 00:19:48

标签: python python-3.x pandas

这就是协议,我有这个数据框,请命名为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哭泣。

谢谢大家!

1 个答案:

答案 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
相关问题