获取数据框中特定列每小时的平均值
Getting the average value of each hour for specific columns in data frame
我有一个数据框,其中 date/time 作为“parse_dates”传递,然后设置为数据框的索引列。
Flow Enter Leave kWE kW
Time
2021-08-30 08:50:00 24.22 14.0 5.7 66.56 619.478012
2021-08-30 08:51:00 24.22 14.0 5.7 66.56 619.478012
我想每小时和每天获取列 'kWE' 和 'Flow' 的平均值,但我不确定如何在 date/time 设置为时提取数据索引。
您可以使用每小时 (h
) 频率的 resample
:
cols = ['Flow', 'kWE']
df.resample('h')[cols].mean()
输出:
Flow kWE
Time
2021-08-30 08:00:00 24.22 66.56
或使用 origin='start'
以第一个值作为起点。
注意不同的索引。这里的结果是相同的,但这可能会根据行的聚类方式在更大的数据上给出不同的输出:
df.resample('h', origin='start')[cols].mean()
输出:
Flow kWE
Time
2021-08-30 08:50:00 24.22 66.56
使用:
#Preparing data
string = """Time Flow Enter Leave kWE kW
2021-08-30 08:50:00 24.22 14.0 5.7 66.56 619.478012
2021-08-30 08:51:00 24.22 14.0 5.7 66.56 619.478012"""
data = [x.split(' ') for x in string.split('\n')]
df = pd.DataFrame(data[1:], columns = data[0])
df['Time']=pd.to_datetime(df['Time'])
df = df.set_index('Time')
#Solution, daily and hourly averages:
df.groupby(df.index.day)[['kWE', 'Flow']].mean()
df.groupby(df.index.hour)[['kWE', 'Flow']].mean()
我有一个数据框,其中 date/time 作为“parse_dates”传递,然后设置为数据框的索引列。
Flow Enter Leave kWE kW
Time
2021-08-30 08:50:00 24.22 14.0 5.7 66.56 619.478012
2021-08-30 08:51:00 24.22 14.0 5.7 66.56 619.478012
我想每小时和每天获取列 'kWE' 和 'Flow' 的平均值,但我不确定如何在 date/time 设置为时提取数据索引。
您可以使用每小时 (h
) 频率的 resample
:
cols = ['Flow', 'kWE']
df.resample('h')[cols].mean()
输出:
Flow kWE
Time
2021-08-30 08:00:00 24.22 66.56
或使用 origin='start'
以第一个值作为起点。
注意不同的索引。这里的结果是相同的,但这可能会根据行的聚类方式在更大的数据上给出不同的输出:
df.resample('h', origin='start')[cols].mean()
输出:
Flow kWE
Time
2021-08-30 08:50:00 24.22 66.56
使用:
#Preparing data
string = """Time Flow Enter Leave kWE kW
2021-08-30 08:50:00 24.22 14.0 5.7 66.56 619.478012
2021-08-30 08:51:00 24.22 14.0 5.7 66.56 619.478012"""
data = [x.split(' ') for x in string.split('\n')]
df = pd.DataFrame(data[1:], columns = data[0])
df['Time']=pd.to_datetime(df['Time'])
df = df.set_index('Time')
#Solution, daily and hourly averages:
df.groupby(df.index.day)[['kWE', 'Flow']].mean()
df.groupby(df.index.hour)[['kWE', 'Flow']].mean()