Python 使用一列值将数据帧从m行n列重塑为m x n行

Python 使用一列值将数据帧从m行n列重塑为m x n行,python,pandas,dataframe,data-science,Python,Pandas,Dataframe,Data Science,将数据帧从m行x n列重塑为m x n行单列 Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2000 12.7 13.8 13.3 12.6 12.8 12.3 13.4 14 13 12.8 13 13.2 2001 13.8 13.7 13.8 13.9 13.4 14.2 14.4 15.6 15.2 16 15.9

将数据帧从m行x n列重塑为m x n行单列

Year   Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov  Dec
2000  12.7  13.8  13.3  12.6  12.8  12.3  13.4    14    13  12.8    13 13.2
2001  13.8  13.7  13.8  13.9  13.4  14.2  14.4    15.6  15.2    16  15.9    17
2002  16.5    16  16.6  16.7  16.6  16.7  16.8    17    16.3  15.1  17.1  16.9

然后简单地将“年”+“月”列组合成一个日期字段,并绘制数据列


我对这件事很生疏。读取各种熔化、重塑、堆叠选项的速度令人沮丧。

您可以对熊猫的数据帧使用
melt
,如下所示:

df = pd.melt(df, id_vars=['Year'])

id\u vars
中未指定的所有其他列名将为您融化为一列

如其他人所述,
melt
将在您的数据框中作为一列时起作用。如果年份是您的索引(很难说,但可能基于您的维度),您可以使用
stack
reset\u index

to_datetime
可以将两列组合起来创建日期时间,但需要先指定一个日期值:

df.columns.name = 'Month'
df = df.stack().reset_index()
df['Date'] = pd.to_datetime(df[['Year', 'Month']].assign(Day=1))

新的日期列可用于绘制您喜欢的数据包。

s=df.melt('Year')此速记很有用。谢谢。:)谢谢我的数据框有一列“年”。这是一个方便的技巧链知道。
df.columns.name = 'Month'
df = df.stack().reset_index()
df['Date'] = pd.to_datetime(df[['Year', 'Month']].assign(Day=1))