【问题标题】:How to get rows containg empty list in a Data Frame Columns in Python如何在Python的数据框列中获取包含空列表的行
【发布时间】:2017-06-27 20:11:39
【问题描述】:

我有一个这样的数据框:

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

非常感谢

【问题讨论】:

  • 如果没有空字符串,可以使用test[test['B'].str.len()==0]
  • 是的,它似乎有效,我在不同的位置尝试了 len() 并没有为我工作。谢谢!

标签: python list pandas dataframe


【解决方案1】:

由于空列表将被解释为要以矢量化方式处理的集合,因此我看不到任何测试方法,只能深入到 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  []

【讨论】:

    【解决方案2】:

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

    test[~test['B'].astype(bool)]
    
       A   B
    0  a  []
    

    【讨论】:

      猜你喜欢
      • 2019-11-25
      • 2020-09-21
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 2019-07-01
      • 2019-09-29
      相关资源
      最近更新 更多