python - 带有日期时间索引的 Pandas Pivot

标签 python pandas dataframe pivot-table

我在使用日期时间值作为索引旋转数据框时遇到了一些麻烦。
我的 df 看起来像这样:

Timestamp           Value
2016-01-01 00:00:00 16.546900
2016-01-01 01:00:00 16.402375
2016-01-01 02:00:00 16.324250

其中时间戳是一个,datetime64[ns]。我正在尝试旋转表格,使其看起来像这样。

Hour       0    1    2    4   ....
Date
2016-01-01 16.5 16.4 16.3 17  ....
....
....

我已尝试使用下面的代码,但在运行时出现错误。
df3 =  pd.pivot_table(df2,index=np.unique(df2.index.date),columns=np.unique(df2.index.hour),values=df2.Temp)
KeyError                                  Traceback (most recent call last)
 in ()
      1 # Pivot Table
----> 2 df3 = pd.pivot_table(df2,index=np.unique(df2.index.date),columns=np.unique(df2.index.hour),values=df2.Temp)

~\Anaconda3\lib\site-packages\pandas\core\reshape\pivot.py in pivot_table(data, values, index, columns, aggfunc, fill_value, margins, dropna, margins_name) 56 for i in values: 57 if i not in data: ---> 58 raise KeyError(i) 59 60 to_filter = []

KeyError: 16.5469


任何帮助或见解将不胜感激。

最佳答案

我稍微扩展了如下输入数据(假设在同一日期/小时内没有重复的条目)

Timestamp           Value
2016-01-01 00:00:00 16.546900
2016-01-01 01:00:00 16.402375
2016-01-01 02:00:00 16.324250
2016-01-01 04:00:00 16.023928
2016-01-03 04:00:00 16.101919
2016-01-05 23:00:00 13.405928

看起来有点尴尬,但像下面这样的东西是有效的。
df2['Date'] = df2.Timestamp.apply(lambda x: str(x).split(" ")[0])
df2['Hour'] = df2.Timestamp.apply(lambda x: str(x).split(" ")[1].split(":")[0])
df3 = pd.pivot_table(df2, values='Value', index='Date', columns='Hour')

[输出]
Hour        00      01        02        04          23
Date                    
2016-01-01  16.5469 16.402375 16.32425  16.023928   NaN
2016-01-03  NaN     NaN       NaN       16.101919   NaN
2016-01-05  NaN     NaN       NaN       NaN         13.405928

最后,如果您的列需要是整数,
df3.columns = [int(x) for x in df3.columns]

希望这可以帮助。

关于python - 带有日期时间索引的 Pandas Pivot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50827039/

相关文章:

python - AttributeError : dlsym(RTLD_DEFAULT, AbsoluteToNanoseconds):找不到符号

python - 如何使用stockstats查看MACD信号?

python - 在数据框python的每一行中按字母顺序对单词进行排序

python - Pandas Dataframe 自动重命名重复的列名称

python - Pandas 中的自定义聚合表达式

r - 如何通过合并 csv 文件创建数据框,然后基于它创建 Shiny 的应用程序?

python - 表输入参数和标量输出参数

python - 条件列表理解

python - UnboundLocalError 行为不直观的原因 2

python - 使用 pandas 时间序列的过去 n 小时的变化率