gpt4 book ai didi

Python pandas 加入覆盖

转载 作者:太空宇宙 更新时间:2023-11-04 06:01:52 24 4
gpt4 key购买 nike

我意识到这个问题类似于 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 block 都得到相同的新值。目前,我是这样做的:

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 列。这当然很完美,唯一的问题是我觉得它非常难看。

有更好的方法吗?

最佳答案

你可以尝试这样的事情:

df = df[df.columns[df.columns!='values']].join(s, on='keys')

确保 s 被命名为“values”而不是“new_values”。

据我所知,pandas 没有加入“强制覆盖”或“警告覆盖”的能力。

关于Python pandas 加入覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24452991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com