繁体   English   中英

重塑熊猫数据框:从一列创建多列

[英]Reshape pandas dataframe: Create multiple columns from one column

我想重塑以下数据框

在此处输入图像描述

进入

在此处输入图像描述

有人可以帮我吗?

您是否尝试过df.pivot()pd.pivot() C列中的值将成为列标题。 之后,展平多索引列,并重命名它们。

import pandas as pd

#df = df.pivot(['A', 'B'], columns='C').reset_index()    #this also works
df = pd.pivot(data=df, index=['A', 'B'], columns='C').reset_index()
df.columns = ['A', 'B', 'X', 'Y']
print(df)

输出

   A   B  X  Y
0  a  aa  1  5
1  b  bb  6  2
2  c  cc  3  7
3  d  dd  8  4

有时,可能存在具有相同索引的重复记录,那么您必须改用pd.pivot_table() 参数aggfunc=np.mean将取这些重复记录的平均值,并变成float类型,正如您从输出中看到的那样。

import pandas as pd
import numpy as np

df = pd.pivot_table(data=df, index=['A', 'B'], columns='C', aggfunc=np.mean).reset_index()
df.columns = ['A', 'B', 'X', 'Y']
print(df)

输出

   A   B    X    Y
0  a  aa  1.0  5.0
1  b  bb  6.0  2.0
2  c  cc  3.0  7.0
3  d  dd  8.0  4.0

你可以试试

out = df.pivot(index=['A', 'B'], columns='C', values='D').reset_index()
print(out)

C  A   B  X  Y
0  a  aa  1  5
1  b  bb  6  2
2  c  cc  3  7
3  d  dd  8  4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM