gpt4 book ai didi

python - 用另一列的值替换二进制列中的值

转载 作者:太空狗 更新时间:2023-10-29 18:23:50 26 4
gpt4 key购买 nike

我有一个如下所示的数据框:

df = pd.DataFrame({"value": [4, 5, 3], "item1": [0, 1, 0], "item2": [1, 0, 0], "item3": [0, 0, 1]})
df

value item1 item2 item3
0 4 0 1 0
1 5 1 0 0
2 3 0 0 1

基本上我想要做的是用“值”列中的值替换一个热编码元素的值,然后删除“值”列。生成的数据框应该是这样的:

df_out = pd.DataFrame({"item1": [0, 5, 0], "item2": [4, 0, 0], "item3": [0, 0, 3]})

item1 item2 item3
0 0 4 0
1 5 0 0
2 0 0 3

最佳答案

为什么不直接相乘呢?

df.pop('value').values * df

item1 item2 item3
0 0 5 0
1 4 0 0
2 0 0 3

DataFrame.pop 具有就地删除和返回列的良好效果,因此您可以一步完成。


如果“item_*”列中有除 1 以外的任何值,那么您可以用 bool 值相乘:

df.pop('value').values * df.astype(bool)

item1 item2 item3
0 0 5 0
1 4 0 0
2 0 0 3

如果您的 DataFrame 有其他列,则执行此操作:

df
value name item1 item2 item3
0 4 John 0 1 0
1 5 Mike 1 0 0
2 3 Stan 0 0 1

# cols = df.columns[df.columns.str.startswith('item')]
cols = df.filter(like='item').columns
df[cols] = df.pop('value').values * df[cols]

df
name item1 item2 item3
0 John 0 5 0
1 Mike 4 0 0
2 Stan 0 0 3

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

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