我有这个df:
,我想用半小时制出一半的行,而不用白天制图。
只是一个图表,其中出现次数为半小时,不包括日期。
3272 8711600410367 2019-03-11T20:23:45.415Z d7ec8e9c5b5df11df8ec7ee130552944 home 2019-03-11T20:23:45.415Z DISPLAY None
3273 8711600410367 2019-03-11T20:23:51.072Z d7ec8e9c5b5df11df8ec7ee130552944 home 2019-03-11T20:23:51.072Z DISPLAY None
这是我的尝试:
df["Created"] = pd.to_datetime(df["Created"])
df.groupby(df.Created.dt.hour).size().plot()
但是还没到半个小时
我想在图表上显示整个半小时
答案 0 :(得分:1)
执行此操作的一种方法是将编码分成几个小时和半个小时,然后将它们组合在一起。为了说明,我对您的数据示例进行了扩展:
import pandas as pd
df = pd.DataFrame({'Created':['2019-03-11T20:23:45.415Z', '2019-03-11T20:23:51.072Z', '2019-03-11T20:33:03.072Z', '2019-03-11T21:10:10.072Z']})
df["Created"] = pd.to_datetime(df["Created"])
首先创建“小时列”:
df['Hours'] = df.Created.dt.hour
然后创建一个编码半小时的列。也就是说,如果分钟数大于30,则将其视为半小时。
df['HalfHours'] = [0.5 if x>30 else 0 for x in df.Created.dt.minute]
然后再次将它们放在一起:
df['Hours_and_HalfHours'] = df['Hours']+df['HalfHours']
最后,按groupby计算行数,并绘制:
df.groupby(df['Hours_and_HalfHours']).size().plot()