2
我意识到这个问题类似于join or merge with overwrite in pandas,但接受的答案不适用于我,因为我想从df.join()
使用on='keys'
。Python熊猫加入并覆盖
我有一个数据帧df
它看起来像这样:
keys values
0 0 0.088344
1 0 0.088344
2 0 0.088344
3 0 0.088344
4 0 0.088344
5 1 0.560857
6 1 0.560857
7 1 0.560857
8 2 0.978736
9 2 0.978736
10 2 0.978736
11 2 0.978736
12 2 0.978736
13 2 0.978736
14 2 0.978736
然后,我有一个系列s
(这是从一些df.groupy.apply()
结果)使用相同的按键:
keys
0 0.183328
1 0.239322
2 0.574962
Name: new_values, dtype: float64
基本上我想在df
与该系列中的值,以取代“价值”,通过keys
所以每keys
块获取相同的新值。目前,我做如下:
df = df.join(s, on='keys')
df['values'] = df['new_values']
df = df.drop('new_values', axis=1)
所获得的(与指定的)结果则是:
keys values
0 0 0.183328
1 0 0.183328
2 0 0.183328
3 0 0.183328
4 0 0.183328
5 1 0.239322
6 1 0.239322
7 1 0.239322
8 2 0.574962
9 2 0.574962
10 2 0.574962
11 2 0.574962
12 2 0.574962
13 2 0.574962
14 2 0.574962
也就是说,我将其添加为新列,并通过使用on='keys'
它得到校正形状。然后我给你values
是new_values
并删除new_values
列。这当然是完美的,唯一的问题是我觉得它非常难看。
有没有更好的方法来做到这一点?