【发布时间】:2018-09-25 18:07:06
【问题描述】:
我想按时间对行进行分组,我尝试了以下方法
import pandas as pd
df = pd.DataFrame({'time': ["2001-01-01 10:20:30,000",
"2001-01-01 10:20:31,000",
"2001-01-02 5:00:00,000"],
'val': [1, 2, 3]})
t = pd.DatetimeIndex(df.time)
df = df.groupby([t.day, t.hour, t.minute]).count()
生成的数据框是
time val
time time time
1 10 20 2 2
2 5 0 1 1
我期望的输出(或类似的东西):
time count
1 1-10-20 2
2 2-5-0 1
我想要的情节:X-axis 代表分钟,Y-axis 代表count,按天+小时(比分钟更粗)。
问题:
1) 为什么索引由 3 个 time 列组成,我怎样才能让索引只包含一个包含 1-10-20 和 2-5-0 等元素的列?
2) 只有一列结果为count() 而不是两列time 和val 的最佳做法是什么?
2) 我如何绘制这些数据(按天/小时/分钟分组)以天和小时为单位的刻度?
【问题讨论】:
-
鉴于您提供的示例,您期望的输出是什么?
-
你能澄清一下你想要的情节吗?其他两个问题更容易
-
@user3483203 我更新了问题。