【问题标题】:How to pivot pandas dataframe?如何旋转熊猫数据框?
【发布时间】:2020-02-24 05:07:48
【问题描述】:

我的 DataFrame 如下所示:

我怎样才能为每个Division 拥有Budget

应该是这样的:

import pandas as pd 

df=pd.DataFrame ({
'TotalAmount':[500,600,780,900],
'Division': ['Commercial Auto', 'Commercial Auto','Surety', 'Worker''s Comp'],
'MonthNumber':[1,2,3,4],
'YearNumber': [2019,2019,2019,2019],
'Budget': [550,570,700,920],
'PostDate': ['2019-01-01', '2019-02-01','2019-03-01','2019-04-01']
})
#print(df)
t = pd.pivot_table(df, values='Budget', index='Division',columns='MonthNumber',fill_value=0).reset_index()
print(t)

【问题讨论】:

  • 以这种形式输出重要吗?如果您在 pivot_table 命令中使用 values=['Budget', 'TotalAmount'],您将获得可能足够的更广泛版本。
  • 是的。以这样的形式输出很重要。谢谢

标签: python python-3.x pandas pivot-table


【解决方案1】:
df1 = pd.pivot_table(df, values=['TotalAmount','Budget'] , index='Division',columns='MonthNumber',fill_value=0).T.unstack(0).T.reset_index()
df1.columns.name = None
df1 = df1.sort_values(['Division','level_1'], 0, [True,False])
df1.Division = df1.level_1.where(df1.level_1 == 'Budget', df1.Division)
df1 = df1.drop('level_1', 1)

结果:

          Division    1    2    3    4
1  Commercial Auto  500  600    0    0
0           Budget  550  570    0    0
3           Surety    0    0  780    0
2           Budget    0    0  700    0
5     Workers Comp    0    0    0  900
4           Budget    0    0    0  920

【讨论】:

  • 太棒了!第一行的 T 是什么?只是名字吗?
  • T 代表transpose,即用列交换行。
猜你喜欢
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2021-10-01
  • 2012-07-09
  • 2017-04-10
相关资源
最近更新 更多