我有一列,它包含列表中的值,而有些不是。 我想获得仅由具有列表值的行(因此删除非列表行)组成的数据框。 当前DF列:
Column
["a", "b", "c"]
["a"]
a
b
["cc", "dd"]
结果:
Column
["a", "b", "c"]
["a"]
["cc", "dd"]
答案 0 :(得分:2)
import pandas as pd
df = pd.DataFrame({'Column': [["a", "b", "c"],["a"], 'a','b',["cc", "dd"]]})
print(df[df.Column.apply(lambda row: type(row)==list)])
输出
Column
0 [a, b, c]
1 [a]
4 [cc, dd]
答案 1 :(得分:1)
使用isinstance
方法通过list
测试map
,并按boolean indexing
进行过滤:
df1 = df[df['Column'].map(lambda x: isinstance(x, list))]
如果仅需要输出Column
以及实际数据中可能的多列:
df1 = df.loc[df['Column'].map(lambda x: isinstance(x, list)), ['Column']]
或者喜欢在评论中
df1 = pd.DataFrame({'Column': [row for row in df['Column'] if isinstance(row, list)]})