Python 从小时数据中查找每天的最大值

Python 从小时数据中查找每天的最大值,python,pandas,csv,dask,Python,Pandas,Csv,Dask,我无法从每小时数据中获取每天的最大值。 原始文件每天包含每个名称的24个数据(名称太多)。例如,一个名称有24个数据: 开始时间段名称值 2019年2月23日0:00 60 MBTS_H2145X 100 2019年2月23日1:00 60 MBTS_H2145X 100 2019年2月23日2:00 60 MBTS_H2145X 1 2019年2月23日3:00 60 MBTS_H2145X 1 2019年2月23日4:00 60 MBTS_H2145X 1 2019年2月23日5:00 60

我无法从每小时数据中获取每天的最大值。 原始文件每天包含每个名称的24个数据(名称太多)。例如,一个名称有24个数据:

开始时间段名称值
2019年2月23日0:00 60 MBTS_H2145X 100
2019年2月23日1:00 60 MBTS_H2145X 100
2019年2月23日2:00 60 MBTS_H2145X 1
2019年2月23日3:00 60 MBTS_H2145X 1
2019年2月23日4:00 60 MBTS_H2145X 1
2019年2月23日5:00 60 MBTS_H2145X 2324
2019年2月23日6:00 60 MBTS_H2145X 2323
2019年2月23日7:00 60 MBTS_H2145X 2323
2019年2月23日8:00 60 MBTS_H2145X 2323
2019年2月23日9:00 60 MBTS_H2145X 2323
2019年2月23日10:00 60 MBTS_H2145X 2323
2019年2月23日11:00 60 MBTS_H2145X 2323
2019年2月23日12:00 60 MBTS_H2145X 1
2019年2月23日13:00 60 MBTS_H2145X 21
2019年2月23日14:00 60 MBTS_H2145X 21
2019年2月23日15:00 60 MBTS_H2145X 23
2019年2月23日16:00 60 MBTS_H2145X 350
2019年2月23日17:00 60 MBTS_H2145X 323
2019年2月23日18:00 60 MBTS_H2145X 23
2019年2月23日19:00 60 MBTS_H2145X 23
2019年2月23日20:00 60 MBTS_H2145X 2323
2019年2月23日21:00 60 MBTS_H2145X 23
2019年2月23日22:00 60 MBTS_H2145X 23
2019年2月23日23:00 60 MBTS_H2145X 2
我得到的结果是:(这是错误的,应该是2324)

开始时间名称最大值
2019年2月23日0百万吨/平方英寸H2145X 350
我有以下代码,但我得到了错误的结果

导入dask.dataframe作为dd
将numpy作为np导入
作为pd进口熊猫
filename='V.csv'
df=dd.read_csv(文件名,dtype='str')
#_________更改日期格式
df['Start Time']=df['Start Time'].map(lambda x:pd.to_datetime(x,errors='concurve'))
#_________改为纯日期,不含小时
df['Start Time']=df['Start Time'].dt.date
grouped_df=(df.groupby(['Start Time','name']).agg({'value':'max'}).重命名(columns={'value':'max value'}).重置_index())
分组到csv(“e1.csv”)
打印(分组测向头(12))

保持代码完全相同。只需将此行更改为:

grouped_df=(df.groupby(['Start Time','name']).agg({'value':'max'}).rename(columns={'value':'max value'}).reset_index())
改为:

df.value = pd.to_numeric(df.value)

grouped_df= (df.groupby(['Start Time','name'])['value'].max().rename(columns={'value':'max value'}).reset_index()

df = pd.merge(df, grouped_df, on  = ['Start Time','name'])
聚合函数可能有问题


或者,如果您的数据类型只是字符串,则只需将pd.添加到数字行中,并保持其他内容不变。

DTYPE='str'
-字符串
“350”
是最高值。亲爱的@TemporalWolf,你想把它们转换成数字。只要改变阅读类型就行了
df=dd.read\u csv(文件名)
谢谢