从python panda数据帧中删除行

时间:2015-06-01 19:51:15

标签: python pandas dataframe

我的数据框有列,如票证,主机,驱动器型号,机箱,机架等。

我希望机箱列中包含值的所有行等于'1025C-M3B''1026T-M3FB''2026TT-DLRF''SYS-2027TR-D70RF+'。我想删除其余部分。

我试过

data2 = data1[data1.Chassis == '1025C-M3B' 
              or data1.Chassis == '1026T-M3FB' 
              or data1.Chassis == '2026TT-DLRF' 
              or data1.Chassis == 'SYS-2027TR-D70RF+']

得到了

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

然后尝试了

data2 = data1[data1.Chassis.all() == '1025C-M3B' 
              or data1.Chassis.all() == '1026T-M3FB' 
              or data1.Chassis.all() == '2026TT-DLRF' 
              or data1.Chassis.all() == 'SYS-2027TR-D70RF+']

得到了

KeyError: u'no item named False'

有人可以告诉我怎么做吗?

2 个答案:

答案 0 :(得分:2)

使用按位或(|)代替逻辑or



data2 = data1[(data1.Chassis == '1025C-M3B') | (data1.Chassis == '1026T-M3FB') | (data1.Chassis == '2026TT-DLRF') | (data1.Chassis == 'SYS-2027TR-D70RF+')]




你可以找到很多关于在numpy / pandas中使用按位与逻辑运算的阅读材料。 Here is one

答案 1 :(得分:1)

您可以使用isin

data1[data1['Chassis'].isin(['1025C-M3B', '1026T-M3FB', '2026TT-DLRF','SYS-2027TR-D70RF+'])]