Pandas:如何在2个选定列的任何一个中选择带[]的行

时间:2015-09-25 02:19:03

标签: python-2.7 pandas dataframe

我有一个通过映射现有数据帧创建的pandas数据帧 使用键值的字典和每个键的数据列表。

我最后的数据帧类似于(但有1500行):

   N  A                 B         C                   D
0  1  [value1, value2]  [value8]  []                  [value18]
1  2  [value3]          [value9]  [value13, value14]  []
2  3  [value4, value5]  [value10] [value15]           [value19]
3  4  [value6]          [value11] [value16]           [value20]
4  5  [value7]          [value12] [value17]           []

某些行包含一个或多个[],这些行显然被认为是空列表而不是Nan值或'[]'字符串。 当列C或D中有[]缺失值时,是否可以获取行?

预期产出:

   N  A                 B         C                   D
0  1  [value1, value2]  [value8]  []                  [value18]
1  2  [value3]          [value9]  [value13, value14]  []
4  5  [value7]          [value12] [value17]           []

我试过了 df2 = df1 [pd.isnull(df1).any(axis = 1)] 没有成功

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

这样的事情怎么样?只需获取列中每个列表的len,然后选择len为0的位置。

df1['c_len'] = df1.c.apply(len)
df1['d_len'] = df1.d.apply(len)
df1[(df1.c_len == 0) | (df1.d_len == 0)]