使用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