我有一个DataFrame叫做df1
,长这样:
A B C
-----------------
1 1 2
2 2 3
5 4 9
我想获取一行中的所有唯一值。例如第一行中的1和2,第二行中的2、3和第三行中的4、5和9。结果可能会有所变化,我可以想象一个包含唯一值列表的新列,或者用
None
替换重复项也可以(或其他什么方式,也许有更适合这种情况的Pythonic方式)。list(map(set,df.values))
Out[72]: [{1, 2}, {2, 3}, {4, 5, 9}]
In [88]: df.stack().groupby(level=0).apply(lambda x: x.unique().tolist())
Out[88]:
0 [1, 2]
1 [2, 3]
2 [5, 4, 9]
dtype: object
让我们使用pd.unique
,即
df.T.agg([pd.unique])
0 1 2
unique [1, 2] [2, 3] [5, 4, 9]
numpy
函数numpy.unique()
可以应用于所有行。 - pault