Python 数据帧计数唯一列表
如果数据帧中列的类型为Python 数据帧计数唯一列表,python,pandas,dataframe,Python,Pandas,Dataframe,如果数据帧中列的类型为int、float或string,则可以使用columnName.unique()获取其唯一值。 但如果此列是一个列表,例如[1,2,3],该怎么办。 如何获得本专栏的unique df = pd.DataFrame({'col':[[1,1,2],[2,1,3,3],[1,1,2],[1,1,2]]}) print (df) col 0 [1, 1, 2] 1 [2, 1, 3, 3] 2 [1, 1, 2] 3 [1,
int
、float
或string
,则可以使用columnName.unique()
获取其唯一值。
但如果此列是一个列表,例如[1,2,3],该怎么办。
如何获得本专栏的
unique
df = pd.DataFrame({'col':[[1,1,2],[2,1,3,3],[1,1,2],[1,1,2]]})
print (df)
col
0 [1, 1, 2]
1 [2, 1, 3, 3]
2 [1, 1, 2]
3 [1, 1, 2]
print (df['col'].apply(tuple).unique())
[(1, 1, 2) (2, 1, 3, 3)]
L = [list(x) for x in df['col'].apply(tuple).unique()]
print (L)
[[1, 1, 2], [2, 1, 3, 3]]
不能将
unique()
应用于列表等不可散列类型。要做到这一点,您需要转换为哈希类型
使用最新版本的pandas的更好解决方案是使用duplicated()
,避免再次迭代要转换为列表的值
df[~df.col.apply(tuple).duplicated()]
这将以列表的形式返回唯一值。获取值并将其展平。然后您想知道每个列表的唯一元素,还是整个列表都是唯一的?我想获取唯一列表,而不是列表中的唯一值。很抱歉,可能我的描述不清楚。我想获得唯一列表,而不是此列中的唯一值。好的,您可以创建示例数据-5行预期输出吗?例如,如果列“col”是[[1,2,3],[1,2,3],[3,4,5],[1,2,3]],那么结果应该是[[1,2,3],[3,4,5]。是的,这看起来效率更高。