Python 基于时间戳将列拆分为行
因此,我有一个数据帧df,每个城市列都有时间戳和数字值: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-
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')
这是与“旋转”相反的操作,您可以使用该操作恢复原始数据