【发布时间】:2014-06-28 00:00:22
【问题描述】:
我意识到这个问题类似于join or merge with overwrite in pandas,但接受的答案对我不起作用,因为我想使用来自df.join() 的on='keys'。
我有一个 DataFrame 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 列。这当然可以完美地工作,唯一的问题是我觉得它非常难看。
有没有更好的方法来做到这一点?
【问题讨论】: