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



可以通过测试对象类来过滤 df 中的序列吗?

我试过:

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

..但这行不通。

您可以使用

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]

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

最新更新