import pandas as pd
好的,监控采集的光伏发电数据,晚上数据都是0,白天根据天气情况。想要获得几个操作:
1.每天白天的平均值,也就是每天从第一个非零数据到最后一个非零数据之间的平均值;
2.每天第一个和最后一个非零数据的时间,也就是获得第一个和最后一个非零数据所在行,发电开始和结束时间;
3.每天第一个和最后一个非零数据时间差,也就是发电时长
设置索引
去除时间列
df = pd.read_excel('2021(1).xlsx')
df.index=df['dt']
df=df.drop('dt',axis=1)
对应的是第一个问题,第二个问题,第三个问题
def first(x):
return x[x[x!=0].first_valid_index():x[x!=0].last_valid_index()].mean()
def seconed(x):
return x[x!=0].first_valid_index(),x[x!=0].last_valid_index()
def third(x):
return x[x!=0].last_valid_index()-x[x!=0].first_valid_index()
df1=df.groupby(pd.Grouper(freq='D')).apply(first)
df2=df.groupby(pd.Grouper(freq='D')).apply(seconed)
df3=df.groupby(pd.Grouper(freq='D')).apply(third)
拼接操作
df_l=pd.concat([df1,df2,df3],axis=1)
df_l
da | 0 | 1 | |
---|---|---|---|
dt | |||
2021-09-06 | 1.2 | (2021-09-06 15:07:46, 2021-09-06 15:11:46) | 0 days 00:04:00 |
2021-09-07 | 1.0 | (2021-09-07 15:07:46, 2021-09-07 15:11:46) | 0 days 00:04:00 |