用于测试系列中对象类的布尔索引?

时间:2014-02-28 20:19:07

标签: pandas

是否可以通过测试对象类来过滤df中的系列?

我试过了:

df[isinstance(df['A'],list)]

..但这不起作用。

2 个答案:

答案 0 :(得分:1)

您可以使用apply并测试您的列,如下所示:

In [5]:

import pandas as pd
df = pd.DataFrame({'a':[1,'dsvfsdv', [1,2,3,4,5,], 3.4565, list('asdad')]})
df

Out[5]:

                 a
0                1
1          dsvfsdv
2  [1, 2, 3, 4, 5]
3           3.4565
4  [a, s, d, a, d]

[5 rows x 1 columns]

In [6]:

df.apply(lambda row: isinstance(row.a, list), axis=1)

Out[6]:

0    False
1    False
2     True
3    False
4     True
dtype: bool

您现在可以将其用作遮罩:

In [10]:

df[df.apply(lambda row: isinstance(row.a, list), axis=1)]

Out[10]:

                 a
2  [1, 2, 3, 4, 5]
4  [a, s, d, a, d]

[2 rows x 1 columns]

答案 1 :(得分:0)

我不这么认为。很确定你需要一个循环,并且必须对列表中的每个类型运行isinstance测试。如果列表是对象而不是特定类,则需要为列表中的每个元素调用getClass()以使isinstance工作。