2017-08-24 144 views
0

问候让我有一个熊猫数据帧,看起来像这样:删除了一些列的熊猫数据帧在一行

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' ] 

我想通了,由于某种原因!=不起作用串and I was wondering why?所以我有一个稳定的解决方案:

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

但我不喜欢它,我已经评论它,因为它需要很大的空间,它不是很漂亮,我想做单线循环,如果表达工作,是可能的,问题是:

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

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

回答

2

您可以使用:

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

这个答案,但是你陈述没有意义的条件。你提出的条件是if i is not 'W0' and i is not 'W4',这将永远是真实的。您可能需要再次查看该情况。

+0

是的,我认为'='等同于'是not' – Hartun

+0

乌姆它。你可能正在寻找或运算符而不是和 –

+0

不是它不是不工作,我正在寻找,因为如果我是W0 =>我不是W0(假),我不是W4( True)=>'表达式是'False'=>我们不会丢弃该列 – Hartun

0

这应该工作:

raw_data = pd.DataFrame(raw_data, index=your_index, columns=['W0', 'W4'])