使用python重新排列数据帧
我的数据集如下所示:使用python重新排列数据帧,python,pandas,Python,Pandas,我的数据集如下所示: Category Date_x Value_x Date_y Value_y A 01/01/2015 3 02/01/2015 5 B 01/01/2015 6 02/01/2015 10 C 01/01/2015 7 02/01/2015 5 使用Pyt
Category Date_x Value_x Date_y Value_y
A 01/01/2015 3 02/01/2015 5
B 01/01/2015 6 02/01/2015 10
C 01/01/2015 7 02/01/2015 5
使用Python,如何更改此数据帧,使其显示如下:
Category Date_x Value_x
A 01/01/2015 3
A 02/01/2015 5
B 01/01/2015 6
B 02/01/2015 10
C 01/01/2015 7
C 02/01/2015 5
我对熊猫还是新手,非常感谢你的帮助
编辑:我只显示了数据集的一部分。实际上,它是一个包含100多个类别的大型数据集。如果您先将列重命名为多级列,然后使用
.stack()
重新调整数据帧的形状,则完成任务会容易得多
似乎您在水平轴上合并或连接了两个带有日期、值和类别列的数据帧。在这种情况下,您应该返回一个步骤并在垂直轴上连接它们。如果不是,假设索引是
“Category”
,则可以执行以下操作
df_1 = df[['Date_x', 'Value_x']].rename(columns={'Date_x': 'Date', 'Value_x': 'Value'})
df_2 = df[['Date_y', 'Value_y']].rename(columns={'Date_y': 'Date', 'Value_y': 'Value'})
df = pd.concat([df1, df2]).sort_index()
我可能会为此使用concat() 从你的身体开始
Category Date_x Value_x Date_y Value_y
0 A 01/01/2015 3 02/01/2015 5
1 B 01/01/2015 6 02/01/2015 10
2 C 01/01/2015 7 02/01/2015 5
然后选择y值并存储在新帧中。也可以重命名它们
dfY = df[["Category","Date_y","Value_y"]]
dfY.columns = ["Category","Date_x","Value_x"]
dfY
Category Date_x Value_x
0 A 02/01/2015 5
1 B 02/01/2015 10
2 C 02/01/2015 5
然后使用原始帧和新“y”帧中的x值计算concat
dfY = df[["Category","Date_y","Value_y"]]
dfY.columns = ["Category","Date_x","Value_x"]
dfY
Category Date_x Value_x
0 A 02/01/2015 5
1 B 02/01/2015 10
2 C 02/01/2015 5
pd.concat([df[["Category","Date_x","Value_x"]],dfY],ignore_index=True).sort(["Category","Date_x"])
Category Date_x Value_x
0 A 01/01/2015 3
3 A 02/01/2015 5
1 B 01/01/2015 6
4 B 02/01/2015 10
2 C 01/01/2015 7
5 C 02/01/2015 5