如果每個小時(即24)有一列,並且每個日期都存在,那麼你會更好地進行numpy的重塑(它會快得多),並通過date_range
生成DatetimeIndex。
假設日期是索引(這是一個DatetimeIndex)和其他24列是小時:
vals = df.values.reshape(-1)
new_index = pd.date_range(start=df.index[0], periods=24*len(df), freq='H')
pd.Series(vals, new_index)
否則,您可以使用itertools產品創建新的索引....我會先使列營業時間:
df.columns = np.arange(0, len(df.columns)) * pd.offsets.Hour(1)
In [11]: df
Out[11]:
<0 * Hours> <Hour> <2 * Hours> <3 * Hours>
DATE
2014-01-01 1.2 2.4 3.3 4.1
2014-01-02 4.3 2.6 3.2 4.1
注:同樣,至關重要的是,日期是DatetimeIndex這裏。
from itertools import product
new_index = [t + td for t, td in product(df.index, df.columns)]
In [21]: pd.Series(df.values.reshape(-1), new_index)
Out[21]:
2014-01-01 00:00:00 1.2
2014-01-01 01:00:00 2.4
2014-01-01 02:00:00 3.3
2014-01-01 03:00:00 4.1
2014-01-02 00:00:00 4.3
2014-01-02 01:00:00 2.6
2014-01-02 02:00:00 3.2
2014-01-02 03:00:00 4.1
dtype: float64
是否有24列? (即每個小時是否有一列?) –
對於這兩種情況都有答案,我想知道是否應該有更好的方法。 –