将数据框列值转换为列表

时间:2019-09-03 13:11:29

标签: python pandas

我有一列,它包含列表中的值,而有些不是。 我想获得仅由具有列表值的行(因此删除非列表行)组成的数据框。 当前DF列:

Column
["a", "b", "c"]
["a"]
a
b
["cc", "dd"]

结果:

Column
["a", "b", "c"]
["a"]
["cc", "dd"]

2 个答案:

答案 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)]})