可以通过测试对象类来过滤 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正常工作。