如何在Python的数据框列中获取包含空列表的行

时间:2017-02-09 17:26:30

标签: python list pandas dataframe

我有一个这样的数据框:

    test = pd.DataFrame(columns=['A','B'])
    test.loc[0,'A'] = 'a'
    test.loc[0,'B'] = []
    test.loc[1,'A'] = 'b'
    test.loc[1,'B'] = ['a','b']

我想获得另一个数据框,其中包含列' B'包含一个空列表。什么是pythonic的做法?

    A    B
0   a   []

非常感谢

2 个答案:

答案 0 :(得分:3)

由于空列表将被解释为要以矢量化方式处理的集合,我看不到任何方法来测试它,而是深入到apply调用:

test.B.apply(lambda c: c==[])
Out[71]: 
0     True
1    False
Name: B, dtype: bool

test[test.B.apply(lambda c: c==[])]
Out[72]: 
   A   B
0  a  []

答案 1 :(得分:0)

空列表将布尔值转换为False。使用~将其转换为True是一个简单的技巧。它很容易阅读,并且对我来说运行非常快。绝对比使用len()更快。

test[~test['B'].astype(bool)]

   A   B
0  a  []