从 pandas 数据框创建字典
Create dictionary from pandas dataframe
我有一个 pandas 数据框,其数据如下:
pandas dataframe
由此我需要创建一个字典,其中键是 Customer_ID,值是元组数组(feat_id,feat_value)。
正在使用数据帧上的 to_dict() 函数接近。
谢谢
你应该首先将Customer_ID
设置为DataFrame索引,并使用df.to_dict
和orient='index'
来获得一个形式为{index -> {column -> value}}的dict。 (参见 Documentation)。然后你可以使用字典理解提取内部字典的值以获得元组。
df_dict = {key: tuple(value.values())
for key, value in df.set_index('Customer_ID').to_dict('index').items()}
使用理解:
out = {customer: [tuple(l) for l in subdf.to_dict('split')['data']]
for customer, subdf in df.groupby('Customer_ID')[['Feat_ID', 'Feat_value']]}
print(out)
# Output
{80: [(123, 0), (124, 0), (125, 0), (126, 0), (127, 0)]}
输入数据帧:
>>> df
Customer_ID Feat_ID Feat_value
0 80 123 0
1 80 124 0
2 80 125 0
3 80 126 0
4 80 127 0
我有一个 pandas 数据框,其数据如下:
pandas dataframe
由此我需要创建一个字典,其中键是 Customer_ID,值是元组数组(feat_id,feat_value)。
正在使用数据帧上的 to_dict() 函数接近。
谢谢
你应该首先将Customer_ID
设置为DataFrame索引,并使用df.to_dict
和orient='index'
来获得一个形式为{index -> {column -> value}}的dict。 (参见 Documentation)。然后你可以使用字典理解提取内部字典的值以获得元组。
df_dict = {key: tuple(value.values())
for key, value in df.set_index('Customer_ID').to_dict('index').items()}
使用理解:
out = {customer: [tuple(l) for l in subdf.to_dict('split')['data']]
for customer, subdf in df.groupby('Customer_ID')[['Feat_ID', 'Feat_value']]}
print(out)
# Output
{80: [(123, 0), (124, 0), (125, 0), (126, 0), (127, 0)]}
输入数据帧:
>>> df
Customer_ID Feat_ID Feat_value
0 80 123 0
1 80 124 0
2 80 125 0
3 80 126 0
4 80 127 0