假设我有一个带有2列的Pandas数据框(列A和列B):对于列'A'中的值,列'B'中有多个值.我想为每个键创建一个包含多个值的字典,这些值也应该是唯一的.请建议我这样做的方法.
一种方法是分组列A:
In [1]: df = pd.DataFrame([[1, 2], [1, 4], [5, 6]], columns=['A', 'B'])
In [2]: df
Out[2]:
A B
0 1 2
1 1 4
2 5 6
In [3]: g = df.groupby('A')
Run Code Online (Sandbox Code Playgroud)
tolist在每个小组的B栏上申请:
In [4]: g['B'].tolist() # shorthand for .apply(lambda s: s.tolist()) "automatic delegation"
Out[4]:
A
1 [2, 4]
5 [6]
dtype: object
Run Code Online (Sandbox Code Playgroud)
然后打电话to_dict给这个系列:
In [5]: g['B'].tolist().to_dict()
Out[5]: {1: [2, 4], 5: [6]}
Run Code Online (Sandbox Code Playgroud)
如果您希望这些是唯一的,请使用unique(注意:这将创建一个numpy数组而不是列表):
In [11]: df = pd.DataFrame([[1, 2], [1, 2], [5, 6]], columns=['A', 'B'])
In [12]: g = df.groupby('A')
In [13]: g['B'].unique()
Out[13]:
A
1 [2]
5 [6]
dtype: object
In [14]: g['B'].unique().to_dict()
Out[14]: {1: array([2]), 5: array([6])}
Run Code Online (Sandbox Code Playgroud)
其他的替代品使用.apply(lambda s: set(s)),.apply(lambda s: list(set(s))),.apply(lambda s: list(s.unique()))...
| 归档时间: |
|
| 查看次数: |
2776 次 |
| 最近记录: |