Python数据帧的转换

Python数据帧的转换,python,pandas,dataframe,Python,Pandas,Dataframe,如何转换以下数据帧 对此 我可以通过以下方式实现这一点: df=pd.read_csv(r"D:\Python_Test\df_test.csv") df1=pd.pivot_table(df,index=["Country","Region"], values="Value",columns="Type").reset_index() df_c=pd.DataFrame(df.groupb

如何转换以下数据帧

对此

我可以通过以下方式实现这一点:

df=pd.read_csv(r"D:\Python_Test\df_test.csv")

df1=pd.pivot_table(df,index=["Country","Region"], values="Value",columns="Type").reset_index()
df_c=pd.DataFrame(df.groupby(by="Country")["Value"].agg("sum")).rename(columns={"Value":"Country_Value"}).reset_index()
df_r=pd.DataFrame(df.groupby(by="Region")["Value"].agg("sum")).rename(columns={"Value":"Region_Value"}).reset_index()

df_final= pd.merge(pd.merge(df1,df_c,how="inner",on="Country"),df_r,how="inner",on="Region")
是否有更好/最简单的方法来实现这一点?

使用并为
透视添加表
aggfunc='sum'
,用于更改默认聚合
平均值

df=pd.read_csv(r"D:\Python_Test\df_test.csv")

df_final=(df.pivot_table(index=["Country","Region"], 
                    values="Value",
                    columns="Type", 
                    aggfunc='sum')
       .reset_index())

df_final['Country_Value'] = df_final.groupby(by="Country")["Value"].transform("sum")
df_final['Region_Value'] = df_final.groupby(by="Region")["Value"].transform("sum")

print (df_final)

只有groupby的条目数与pivot的条目数相同,但groupby的条目数为12行,pivot的条目数为6行时,此操作才有效。
只有groupby的条目数与pivot的条目数相同时,此操作才有效。
不理解,首先使用
pivot
,然后对
df1
中的新列进行聚合
sum
。所以在
transform
之后,所有的代码都工作得很好。@KVHP-或者您忘记了将
agg
更改为
transform
?我只使用了您的代码,但它不起作用。相反,我使用转换来操作实际的数据帧,并应用pivot@KVHP-您能将我的代码中的错误输出与您的数据一起添加到问题中吗?