her*_*lla 5 python pivot-table time-series dataframe pandas
遵循这个食谱.我'转向'一个看起来像这样的数据框:
Close
2015-02-20 14:00:00 1200.1
2015-02-20 14:10:00 1199.8
2015-02-21 14:00:00 1199.3
2015-02-21 14:10:00 1199.0
2015-02-22 14:00:00 1198.4
2015-02-22 14:10:00 1199.7
Run Code Online (Sandbox Code Playgroud)
把它变成了这个:
14:00 14:10
2015-02-20 1200.1 1199.8
2015-02-21 1199.3 1199.0
2015-02-22 1198.4 1199.7
Run Code Online (Sandbox Code Playgroud)
但是,现在我想要在列之间进行简单的计算,例如:
df['Chg'] = df['14:10:00'] - df['14:00:00']
Run Code Online (Sandbox Code Playgroud)
我得到一个KeyError,因为在'pivoting'之后,列名是datetime.time数据.
In [1]: df_pivot.columns.tolist()
Out [2]:
[datetime.time(14, 0),
datetime.time(14, 10)]
Run Code Online (Sandbox Code Playgroud)
如何修改我的透视数据框,这样我就可以在列之间进行简单的计算.我猜这意味着将列名的格式从datetime.time更改为str.
谢谢
您可以将列名转换为如下字符串:
df.columns =df.columns.map(lambda t: t.strftime('%H:%M'))
Run Code Online (Sandbox Code Playgroud)
或使用rename:
df.rename(columns =lambda t: t.strftime('%H:%M'), inplace=True)
Run Code Online (Sandbox Code Playgroud)
然后索引它们:
df['14:00']
Run Code Online (Sandbox Code Playgroud)
收益:
2015-02-20 2399.9
2015-02-21 NaN
2015-02-22 NaN
Name: 14:00, dtype: float64
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3097 次 |
| 最近记录: |