如何从数据框创建项字典?

时间:2019-10-31 10:12:48

标签: python pandas list dictionary

我有一个 Pandas数据框 df,格式为:

pk  id_column   date_column sales_column
0   111         03/10/19    23
1   111         04/10/19    24
2   111         05/10/19    25
3   111         06/10/19    26
4   112         07/10/19    27
5   112         08/10/19    28
6   112         09/10/19    29
7   112         10/10/19    30
8   113         11/10/19    31
9   113         12/10/19    32
10  113         13/10/19    33
11  113         14/10/19    34
12  114         15/10/19    35
13  114         16/10/19    36
14  114         17/10/19    37
15  114         18/10/19    38

如何获取一个新字典,其中包含来自 id_column sales_column 的数据,其值如下所示,按 date_column 的顺序。< / p>

{
    111: [23, 24, 25, 26],
    112: [27, 28, 29, 30],
    113: ...,
    114: ...
}

1 个答案:

答案 0 :(得分:4)

首先使用groupbylist中创建一系列列表,然后通过Series.to_dict将其转换为字典:

如果需要按id_columndate_column进行排序,请先将值转换为日期时间,然后使用DataFrame.sort_values

df['date_column'] = pd.to_datetime(df['date_column'], dayfirst=True)
df = df.sort_values(['id_column','date_column'])

d = df.groupby('id_column')['sales_column'].apply(list).to_dict()
print (d)

{111: [23, 24, 25, 26], 112: [27, 28, 29, 30], 113: [31, 32, 33, 34], 114: [35, 36, 37, 38]}