是否可以通过测试对象类来过滤df中的系列?
我试过了:
df[isinstance(df['A'],list)]
..但这不起作用。
答案 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工作。