我有一个如下数据框:
foo bar
0 1 foo
1 2 foo
2 3 foo
3 4 foo
4 5 bar
5 6 bar
从这个数据框中提取字典的最简单方法是什么,以便'bar'列的每个唯一值映射到'bar'列标签适用的'foo'列中的值列表?
示例所需结果:
{
'foo': [1,2,3,4],
'bar': [5,6]
}
答案 0 :(得分:2)
你可以这样做:
In [82]: df.groupby('bar')['foo'].apply(list).to_dict()
Out[82]: {'bar': [5, 6], 'foo': [1, 2, 3, 4]}
唯一性:
In [92]: df
Out[92]:
foo bar
0 1 foo
1 2 foo
2 3 foo
3 4 foo
4 5 bar
5 6 bar
6 1 foo # <-- dupe
7 2 foo # <-- dupe
In [93]: df.groupby('bar')['foo'].apply(list).to_dict()
Out[93]: {'bar': [5, 6], 'foo': [1, 2, 3, 4, 1, 2]}
独特:
In [94]: df.groupby('bar')['foo'].apply(lambda x: x.unique().tolist()).to_dict()
Out[94]: {'bar': [5, 6], 'foo': [1, 2, 3, 4]}