我知道
df.name.unique()
Run Code Online (Sandbox Code Playgroud)
将在 ONE 列中给出唯一值'name'。
例如:
name report year
Coch Jason 2012
Pima Molly 2012
Santa Tina 2013
Mari Jake 2014
Yuma Amy 2014
array(['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], dtype=object)
Run Code Online (Sandbox Code Playgroud)
但是,假设我有大约 1000 列,我想同时查看所有列的唯一值。
我该怎么做?
您可以使用set
list(map(set,df.values.T))
Out[978]:
[{'Coch', 'Mari', 'Pima', 'Santa', 'Yuma'},
{'Amy', 'Jake', 'Jason', 'Molly', 'Tina'},
{2012, 2013, 2014}]
Run Code Online (Sandbox Code Playgroud)
放入系列后
pd.Series(list(map(set,df.values.T)),index=df.columns)
Out[980]:
name {Santa, Pima, Yuma, Coch, Mari}
report {Jason, Amy, Jake, Tina, Molly}
year {2012, 2013, 2014}
dtype: object
Run Code Online (Sandbox Code Playgroud)
使用字典理解unique:
pd.Series({c: df[c].unique() for c in df})
Run Code Online (Sandbox Code Playgroud)
结果输出:
name [Coch, Pima, Santa, Mari, Yuma]
report [Jason, Molly, Tina, Jake, Amy]
year [2012, 2013, 2014]
Run Code Online (Sandbox Code Playgroud)
如果你想让你的结果在一个列表中,你可以做这样的事情
[df[col_name].unique() for col_name in df.columns]
Run Code Online (Sandbox Code Playgroud)
出去:
[array(['Coch', 'Pima', 'Santa', 'Mari', 'Yuma'], dtype=object),
array(['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], dtype=object),
array([2012, 2013, 2014])]
Run Code Online (Sandbox Code Playgroud)
这将创建一个二维数组列表,其中每一行都是每列中唯一的值数组。
如果你想要一个二维列表列表,你可以修改上面的
[df[i].unique().tolist() for i in df.columns]
Run Code Online (Sandbox Code Playgroud)
出去:
[['Coch', 'Pima', 'Santa', 'Mari', 'Yuma'],
['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
[2012, 2013, 2014]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16049 次 |
| 最近记录: |