gpt4 book ai didi

python - 将 pandas DataFrame 中的多列删除到一行

转载 作者:行者123 更新时间:2023-11-30 22:31:15 29 4
gpt4 key购买 nike

您好,我有一个 pandas DataFrame,如下所示:

    Product_Code  W0  W1  W2  W3  W4  W5  W6  W7  W8      ...        \
806 P815 0 0 1 0 0 2 1 0 0 ...
807 P816 0 1 0 0 1 2 2 6 0 ...
808 P817 1 0 0 0 1 1 2 1 1 ...
809 P818 0 0 0 1 0 0 0 0 1 ...
810 P819 0 1 0 0 0 0 0 0 0 ...

Normalized 42 Normalized 43 Normalized 44 Normalized 45 \
806 0.00 0.33 0.33 0.00
807 0.43 0.43 0.57 0.29
808 0.50 0.00 0.00 0.50
809 0.00 0.00 0.00 0.50
810 0.00 0.00 0.00 0.00

但我不需要这些列,事实上我只需要 W0 和 W4,所以我想删除所有这些列,这就是我尝试的方法:

raw_data = [ raw_data.drop( [i], 1, inplace = True )  for i in raw_data if i is not 'W0' and i is not  'W4'  ]

半小时后,我发现由于某种原因 != 不能工作字符串 ,我想知道为什么? 所以我有一个稳定的解决方案:

#WORKS !!!!
# for i in raw_data:
# if i != 'W0' and i != 'W4':
# raw_data.drop( [i], 1, inplace = True )

但我一点也不喜欢它,我已经评论了它,因为它占用了很多空间,而且不美观,我想制作单行循环 if 表达式可以工作,是否可能,问题是那:

  raw_data = [ raw_data.drop( [i], 1, inplace = True )  for i in raw_data if i != 'W0' and i != 'W4'  ]

尝试将 DataFrame 转换为列表,应该如何完成?

最佳答案

您可以使用:

raw_data.drop([i for i in raw_data if i is not 'W0' and i is not  'W4'], 
axis=1, inplace=True)

这回答了问题,但你所说的条件没有意义。您输入的条件是如果 i 不是“W0”并且 i 不是“W4”,则这将始终为真。您可能需要再次查看情况。

关于python - 将 pandas DataFrame 中的多列删除到一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45860345/

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