我有一个简单的pandas数据帧,可以在不同的时间进行测量:
volume
t
2013-10-13 02:45:00 17
2013-10-13 05:40:00 38
2013-10-13 09:30:00 29
2013-10-13 11:40:00 25
2013-10-13 12:50:00 11
2013-10-13 15:00:00 17
2013-10-13 17:10:00 15
2013-10-13 18:20:00 12
2013-10-13 20:30:00 20
2013-10-14 03:45:00 9
2013-10-14 06:40:00 30
2013-10-14 09:40:00 43
2013-10-14 11:05:00 10
Run Code Online (Sandbox Code Playgroud)
我正在做一些基本的重新采样和绘图,例如每日总量,它工作正常:
df.resample('D',how='sum').head()
volume
t
2013-10-13 184
2013-10-14 209
2013-10-15 197
2013-10-16 309
2013-10-17 317
Run Code Online (Sandbox Code Playgroud)
但出于某些原因,当我尝试每天输入总数时,它会返回一个多索引系列而不是数据帧:
df.resample('D',how='count').head()
2013-10-13 volume 9
2013-10-14 volume 9
2013-10-15 volume 7
2013-10-16 volume 9
2013-10-17 volume 10
Run Code Online (Sandbox Code Playgroud)
我可以修复数据,因此可以通过一个简单的无堆栈调用轻松绘制,即df.resample('D',how='count').unstack()为什么调用resample与how='count'行为不同how='sum'?
它确实出现resample并count导致一些奇怪的行为就结果数据帧的结构而言(嗯,至少高达0.13.1).请参阅此处了解略有不同但相关的背景:使用多重索引进行计数和重新采样
您可以在此处使用相同的策略:
>>> df
volume
date
2013-10-13 02:45:00 17
2013-10-13 05:40:00 38
2013-10-13 09:30:00 29
2013-10-13 11:40:00 25
2013-10-13 12:50:00 11
2013-10-13 15:00:00 17
2013-10-13 17:10:00 15
2013-10-13 18:20:00 12
2013-10-13 20:30:00 20
2013-10-14 03:45:00 9
2013-10-14 06:40:00 30
2013-10-14 09:40:00 43
2013-10-14 11:05:00 10
Run Code Online (Sandbox Code Playgroud)
所以这是你的问题:
>>> df.resample('D',how='count')
2013-10-13 volume 9
2013-10-14 volume 4
Run Code Online (Sandbox Code Playgroud)
您可以通过指定count应用于调用中volume带有dict 的列来解决此问题resample:
>>> df.resample('D',how={'volume':'count'})
volume
date
2013-10-13 9
2013-10-14 4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4473 次 |
| 最近记录: |