gpt4 book ai didi

python - 具有多个 groupby 的 pandas pivot 数据框

转载 作者:行者123 更新时间:2023-11-28 21:35:09 25 4
gpt4 key购买 nike

我有一个带有如下数据的 pandas 数据框:

df:

     item   day         time      data  
0 item_0 2012-12-02 00:00:01 0.81
1 item_0 2012-12-02 00:00:02 0.07
2 item_0 2012-12-03 00:00:00 0.84
3 item_1 2012-12-02 00:00:01 0.47

item+day+time的组合是唯一的

我正在尝试转换为:

     item   day         time_0    time_1   time_2  
0 item_0 2012-12-02 NaN 0.81 0.07
1 item_0 2012-12-03 0.84 NaN NaN
2 item_1 2012-12-02 NaN 0.47 ...

我试过了:

df_stage_1 = df.groupby(['item','day']).apply(lambda x: x['time'].tolist()).reset_index()

上面的代码生成了一个列表,但时间从 00:00:00 开始没有对齐 - 我可以检查列表并添加和跟踪索引(因此可以将 Nan 添加到这些索引处的值列表)

df_stage_1 = pd.DataFrame(df_stage_1.tolist(), )

上面的代码给了我一个(未对齐的)时间值的数据框,我可以对齐(见上文)并附加到上面步骤中创建的数据框,但我无法弄清楚如何在正确的时间对齐列中获取数据框的值

最佳答案

您可以使用 pd.pivot_table :

res = df.pivot_table(index=['item', 'day'], columns='time',
values='data', aggfunc='first').reset_index()

print(res)

time item day 00:00:00 00:00:01 00:00:02
0 item_0 2012-12-02 NaN 0.81 0.07
1 item_0 2012-12-03 0.84 NaN NaN
2 item_1 2012-12-02 NaN 0.47 NaN

关于python - 具有多个 groupby 的 pandas pivot 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52564456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com