Python 基于时间戳将列拆分为行

Python 基于时间戳将列拆分为行,python,pandas,dataframe,Python,Pandas,Dataframe,因此,我有一个数据帧df,每个城市列都有时间戳和数字值: time new york Amsterdam 2020-10-01 24 12 2020-10-02 31 21 2020-10-03 10 23 我想为每个时间戳将城市列拆分为行,如下所示: time city number 2020-10-01 new york 24 2020-10-

因此,我有一个数据帧df,每个城市列都有时间戳和数字值:

time          new york     Amsterdam
2020-10-01    24           12
2020-10-02    31           21
2020-10-03    10           23
我想为每个时间戳将城市列拆分为行,如下所示:

time          city       number
2020-10-01    new york     24
2020-10-02    new york     31
2020-10-03    new york     10
2020-10-01    Amsterdam    12
2020-10-02    Amsterdam    21
2020-10-03    Amsterdam    23
df= df.T
df= df.reset_index()
new_header = df.iloc[0]
df= df[1:]
df.columns=new_header
city      2020-10-01   2020-10-02   2020-10-03
new york      24         31             10
Amsterdam     12         21             23
我尝试像这样转置数据帧df:

time          city       number
2020-10-01    new york     24
2020-10-02    new york     31
2020-10-03    new york     10
2020-10-01    Amsterdam    12
2020-10-02    Amsterdam    21
2020-10-03    Amsterdam    23
df= df.T
df= df.reset_index()
new_header = df.iloc[0]
df= df[1:]
df.columns=new_header
city      2020-10-01   2020-10-02   2020-10-03
new york      24         31             10
Amsterdam     12         21             23
但是相反,我得到了df的结果,如下所示:

time          city       number
2020-10-01    new york     24
2020-10-02    new york     31
2020-10-03    new york     10
2020-10-01    Amsterdam    12
2020-10-02    Amsterdam    21
2020-10-03    Amsterdam    23
df= df.T
df= df.reset_index()
new_header = df.iloc[0]
df= df[1:]
df.columns=new_header
city      2020-10-01   2020-10-02   2020-10-03
new york      24         31             10
Amsterdam     12         21             23
有人能帮我理解一下数据处理的逻辑吗?
谢谢

pd.melt

pd.melt(df,id_vars=['time'], value_vars=['newyork','Amsterdam'],var_name='city', value_name='number')

pd.melt

pd.melt(df,id_vars=['time'], value_vars=['newyork','Amsterdam'],var_name='city', value_name='number')

答案很直截了当:

df2 = df.melt(id_vars='time', var_name='city', value_name='number')

这是与“旋转”相反的操作,您可以使用它恢复原始数据。

答案非常简单:

df2 = df.melt(id_vars='time', var_name='city', value_name='number')
这是与“旋转”相反的操作,您可以使用该操作恢复原始数据