gpt4 book ai didi

python - Pandas DataFrame,用另一列的值替换一列的值

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

我的 boosting_df Pandas DataFrame 如下:

  sku   boost1 boost2 boost3  boost4
0 a ffffdfg a fggg replace
1 b fff fff fff replace
2 c ddf b ddf replace
3 d dfgd dfgd d replace

对于每一行,如果 'sku' 的值与值 boost1 或 boost2 或 boost3 相同,那么我想用 boost4 中的值替换匹配值

例子:

  sku   boost1 boost2 boost3
0 a ffffdfg replace fggg
1 b fff fff fff
2 c ddf b ddf
3 d dfgd dfgd replace

我试过:

boosting_df.loc[boosting_df['boost1'] == boosting_df['sku'], 'boost1'] = boosting_df['boost4']
boosting_df.loc[boosting_df['boost2'] == boosting_df['sku'], 'boost2'] = boosting_df['boost4']
boosting_df.loc[boosting_df['boost2'] == boosting_df['sku'], 'boost3'] = boosting_df['boost4']

但是我得到了以下错误:

ValueError: shape mismatch: value array of shape (4,) could not be broadcast to indexing result of shape (0,)

最佳答案

每个 bool 掩码都必须应用于分配的两侧,以便维度和索引匹配:

for i in range(1, 4):
col = 'boost{}'.format(i)
mask = (df['sku'] == df[col])
df.loc[mask, col] = df.loc[mask, 'boost4']

输出:

  sku   boost1   boost2   boost3   boost4
0 a ffffdfg replace fggg replace
1 b fff fff fff replace
2 c ddf b ddf replace
3 d dfgd dfgd replace replace

关于python - Pandas DataFrame,用另一列的值替换一列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27897559/

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