我的数据框有列,如票证,主机,驱动器型号,机箱,机架等。
我希望机箱列中包含值的所有行等于'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'
有人可以告诉我怎么做吗?
答案 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+'])]