如何将两个熊猫列转换为字典,但将同一第一列(键)的所有值合并为一个键?

时间:2018-07-28 17:04:14

标签: python pandas

抱歉,标题混乱,基本上我有一个Pandas数据框,我想将两列转换成字典(其中一列是键,另一列是值)。但是,当我使用to_dict()时,问题在于,由于第一列中有许多行具有相同的值,因此只需要其中一行,而不能获取所有数据。有办法解决这个问题吗?

我尝试递归地解决此问题,但我无法弄清楚。

编辑:添加了代码

data = pd.read_csv('file')
datalist = []
data2list = []


for i in range(len(data.index)):
    datalist.append(data.loc[i, 'column1'])

for i in range(len(data.index)):
        data2list.append(data.loc[i, 'column2'])

现在数据列表具有我想要成为键的column1的所有值,而column2具有我想要成为字典中的值的所有值。

但是问题是,数据框看起来像这样:

   column1   column2
0  key1      value1
1  key1      value2
2  key2      value3
3  key2      value4

我希望字典看起来像这样:

dict = {"key1": [value1, value2], "key2": [value3, value4]}

1 个答案:

答案 0 :(得分:1)

Python字典不支持重复键。您可以通过调整第一列中的值来解决此问题,以免重复键。或者,您可以为第一列中的每个唯一键创建一个列表字典。由于您的数据位于Pandas DataFrame中,因此您可以执行以下操作:

import pandas as pd

# Your data
data = pd.DataFrame({'column1':['key1','key1','key2','key2'],
       'column2':['value1','value2','value3','value3']})

# Grouped dict
data_dict = data.groupby('column1').column2.apply(list).to_dict()