Python pandas - pd.melt 带有日期时间索引的数据帧结果为 NaN

luc*_*cfr 3 python datetime pandas

我有以下数据框(sim_2005):

Date         ELEM1 ELEM2 ... ELEM1133
2005-01-01   0.021 2.455 ... 345.2
2005-01-02   0.321 2.331 ... 355.1
...          ...   ...   ... ...
2005-12-31   0.789 3.456 ... 459.9
[365 rows x 1133 columns]
Run Code Online (Sandbox Code Playgroud)

Date作为一个pandas.tseries.index.DatetimeIndex。我在@ami-tavory的帮助下使用 pandas 融化函数对其进行了转换:

 sim_2005_melted = pd.melt(sim_2005, id_vars=sim_2005.index.name, value_vars=list(sim_2005.columns.values), var_name='ELEM', value_name='Q_sim').sort(columns='Date')
Run Code Online (Sandbox Code Playgroud)

结果是:

ID     Date   ELEM     Q_sim
1      NaN    ELEM1    0.021
2      NaN    ELEM1    0.321
...
366    NaN    ELEM2    2.455
367    NaN    ELEM2    2.331
...
402983 NaN    ELEM1133 345.2
402984 NaN    ELEM1133 355.1
Run Code Online (Sandbox Code Playgroud)

出于某种原因,日期时间索引没有被传输,并且该列填充了 NaN。任何帮助或想法有什么问题?

Ale*_*der 5

假设Date是您的 DataFrame 的索引,您可以在熔化的 DataFrame 中获得一个日期列,如下所示:

sim_2005_melted['Date'] = pd.concat([sim_2005.reset_index().Date 
                                     for _ in range(sim_2005.shape[1])], 
                                    ignore_index=True).values
Run Code Online (Sandbox Code Playgroud)