gpt4 book ai didi

python - 如何用列名填充数据框的真实值?

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:51 25 4
gpt4 key购买 nike

我有一个包含 True 和 False 值的 DataFrame。

       A      B      C      D0  False  True   True   False1  False  False  True   False2  True   True   False  False

我想用列名填充真值,用 0 填充假值。我该怎么做?

即得到结果为

   A  B  C  D0  0  B  C  01  0  0  C  02  A  B  0  0

最佳答案

首先将booelan替换为int,然后使用maskwhere通过 ~ 反转掩码:

df = df.astype(int).mask(df, df.columns.to_series(), axis=1)
print (df)
A B C D
0 0 B C 0
1 0 0 C 0
2 A B 0 0

df = df.astype(int).where(~df, df.columns.to_series(), axis=1)
print (df)
A B C D
0 0 B C 0
1 0 0 C 0
2 A B 0 0

谢谢John Galt用于改进新版本的 pandas 0.21.x:

df = df.astype(int).mask(df, df.columns, axis=1)

numpy 解决方案:

a = np.tile(df.columns, [len(df.index),1])
print (a)
[['A' 'B' 'C' 'D']
['A' 'B' 'C' 'D']
['A' 'B' 'C' 'D']]

df = pd.DataFrame(np.where(df.astype(int), a, 0), columns=df.columns, index = df.index)
print (df)
A B C D
0 0 B C 0
1 0 0 C 0
2 A B 0 0

关于python - 如何用列名填充数据框的真实值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45937336/

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