Home > Net >  Create dictionary from pandas dataframe
Create dictionary from pandas dataframe

Time:05-27

I have a pandas dataframe with data as such:

pandas dataframe

From this I need to create a dictionary where Key is Customer_ID and value is array of tuples(feat_id, feat_value).

Am getting close using to_dict() function on dataframe.

Thanks

CodePudding user response:

you should first set Customer_ID as the DataFrame index and use df.to_dict with orient='index' to obtain a dict in the form {index -> {column -> value}}. (see Documentation). Then you can extract the values of the inner dictionaries using dict comprehension to obtain the tuples.

df_dict = {key: tuple(value.values()) 
           for key, value in df.set_index('Customer_ID').to_dict('index').items()}

CodePudding user response:

Use a comprehension:

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

Input dataframe:

>>> 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
  • Related