gpt4 book ai didi

python - Pandas 选择多列然后替换

转载 作者:行者123 更新时间:2023-11-28 22:14:48 24 4
gpt4 key购买 nike

我正在尝试进行多列选择然后在 pandas 中替换

df:

a  b  c  d  e
0 1 1 0 none
0 0 0 1 none
1 0 0 0 none
0 0 0 0 none

选择 a, b, c, d 中的任何一个或所有非零的地方

i, j = np.where(df)
s=pd.Series(dict(zip(zip(i, j),
df.columns[j]))).reset_index(-1, drop=True)

:

0   b
0 c
1 d
2 a

现在我想用系列替换列 e 中的值:

df['e'] = s.values

所以 e 看起来像:

是:

b, c 
d
a
none

但问题是系列的长度与数据框中的行数不同。

关于如何执行此操作的任何想法?

最佳答案

使用DataFrame.dot对于具有列名称的产品,添加 rstrip , 最后添加 numpy.where用于将空字符串替换为 None:

e = df.dot(df.columns + ', ').str.rstrip(', ')
df['e'] = np.where(e.astype(bool), e, None)
print (df)
a b c d e
0 0 1 1 0 b, c
1 0 0 0 1 d
2 1 0 0 0 a
3 0 0 0 0 None

关于python - Pandas 选择多列然后替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53245903/

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