2024-09-29 02:28:51 发布
网友
我刚刚开始在熊猫和数据帧中工作。我想重塑一些数据,但我不确定这样做的最佳方法。我的直觉告诉我要在帧上迭代,但我希望有更好的方法
因此,我有一个初始数据帧,如下所示:
我想让它达到以下状态:
这里有两个方面我真的很挣扎
我希望我只是错过了一些基本的东西,因为我过去没有和熊猫一起工作过
使用^{}和^{}的另一个选项:
(df.melt(['vendor_state', 'client_state', 'date'], var_name='widget_type') .pivot(index=['vendor_state', 'client_state', 'widget_type'], columns='date') .droplevel(0, axis=1) .rename_axis(None, axis=1) .reset_index() .replace('total_|_purchases', '', regex=True) .fillna(0)) # vendor_state client_state widget_type 2021-02-01 2021-02-08 2021-03-07 # 0 CA OR widget_a 8.0 0.0 0.0 # 1 CA OR widget_b 7.0 0.0 0.0 # 2 CA WA widget_a 10.0 0.0 0.0 # 3 CA WA widget_b 5.0 0.0 0.0 # 4 NY NJ widget_a 0.0 7.0 15.0 # 5 NY NJ widget_b 0.0 25.0 9.0 # 6 NY NY widget_a 0.0 24.0 0.0 # 7 NY NY widget_b 0.0 3.0 0.0
通过stack unstack:
stack unstack
df = (df.set_index(['vendor_state','client_state','date']) .stack() .unstack(2) .reset_index() .rename(columns={'level_2': 'widget type'}) .fillna(0) ) df['widget type'] = df['widget type'].str.extract(pat = ("(widget_[a|b])"))
输出:
使用^{} 和^{} 的另一个选项:
通过
stack unstack
:输出:
相关问题 更多 >
编程相关推荐