我有一个非常大的 excel 文件,如下所示:
Device ID PM Adjusted_Time
c9edef390ccb2caa4f42cc05743978c8 49 1/1/18 0:00
30ca1371f6f901f5569bcf373df8d219 56 1/1/18 0:01
cad7c3d7cebf6f6e88e01c43d5dc764d 105 1/1/18 0:01
cd5796a78e2871621c34d6dcdb44d366 103 1/1/18 0:01
...
有 26 个模糊的设备 ID,每个 ID 都有全年每天每小时每分钟的数据。我的目标是首先将各个设备 ID 的数据组合在一起,以便我拥有当年每个设备的数据,然后使用 pd.groupby
的某些方面来获得 24 小时平均 PM 值。>
到目前为止,我转换为日期时间:
import pandas as pd
import numpy as np
df1 = pd.read_excel('data2018-2020.xlxs'
df1['Adjusted_Time'] = pd.to_datetime(df1['Adjusted_Time'], format = '%Y/%m/%d %H:%M:%S')
现在我正在尝试使用 groupby,但我不确定接下来要做什么。 df1.pd.groupby('Device ID')["PM2.5"]
给出了相同的数据,但没有指明它是哪个设备。
Adjusted_Time
2018-01-01 05:27:40 49.715808
2018-01-01 05:28:06 56.286233
2018-01-01 05:28:25 105.642026
2018-01-01 05:28:26 103.245486
2018-01-01 05:30:41 98.328302
我的理想输出是
Device ID PM Adjusted_Time
device1 45 01-01-2018
device2 55 01-01-2018
device3 66 01-01-2018
对 26 个设备中的每一个,依此类推。任何帮助将不胜感激!
答案 0 :(得分:0)
您可以先将修改后的格式代码转换为日期,如下所示:
df['Adjusted_Time'] = pd.to_datetime(df['Adjusted_Time'], format = '%m/%d/%y %H:%M')
请注意,如果您的日期实际上是先天而不是先是月,则可以使用:
df['Adjusted_Time'] = pd.to_datetime(df['Adjusted_Time'], format = '%d/%m/%y %H:%M')
然后 groupby()
2 个字段:Device ID
以及仅 Adjusted_Time
的日期字段:
df.groupby([df['Device ID'], df['Adjusted_Time'].dt.date])['PM'].mean().reset_index()