从一对多(未透露)的pandas数据帧列中获取映射dict

时间:2018-01-11 21:18:36

标签: python pandas dictionary

我有一个如下数据框:

    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]
}

1 个答案:

答案 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]}