Python Pandas:每隔15分钟对数据进行水平重组



我对Python的数据分析非常陌生,我的任务是重新组织一个自动生成的csv文件,在该文件中,四家公司的能源消耗(以兆瓦为单位(将在2022年7月进行监测。从7月1日(00:15(到7月31日(23:45(,这些公司每15分钟报告一次能耗。这就是原始数据帧的样子:

Mw公司A公司B公司C公司A公司B公司C-130公司B公司C公司A公司C公司D公司A-145公司D公司A-180公司C公司D
索引 日期 季度 公司
1 2022年7月1日 00:15
2 2022年7月1日 00:15
3 2022年7月1日 00:1510
4 2022年7月1日
1 2022年7月1日 00:30
2 2022年7月1日 00:30
3 2022年7月1日 00:30
4 2022年7月1日
1 2022年7月1日 00:45 公司A
2 1022年7月1日 00:45120
3 2022年7月1日 00:45
4 2022年7月1日
1 2022年7月2日 00:15
2022年7月2日 00:15 公司B 0
3 2022年7月2日 00:15160
4 2022年7月2日 00:15
1 2022年7月2日 00:3010
2022年7月2日 00:30 公司B 0
3 2022年7月2日 00:30 公司C
4 2022年7月2日 00:30
1 2022年7月2日 00:45
2022年7月2日 00:45 公司B 115
3 2022年7月2日 00:45145
4 2022年7月2日 00:45

我将pivot_table应用于数据帧,其中索引为"Company"、"Date"和值"Mw"。列是从"Quarter"行创建的。在接收到的数据中,使用reset_index((重置索引。数据如下:

Quarter        Date    Company  00:15  00:30  00:45
0        01.07.2022  Company A      0      0   -130
1        01.07.2022  Company B      0      0    120
2        01.07.2022  Company C     10      1    110
3        01.07.2022  Company D     15    150      0
4        02.07.2022  Company A      0     10   -180
5        02.07.2022  Company B      0      0    115
6        02.07.2022  Company C    160   -145    145
7        02.07.2022  Company D    180    150      0

为了按照您的示例排序,使用了sort_values(by='Date'(。删除索引名称:

df1.rename_axis(None, axis=1, inplace=True)

索引设置为从0到n。

接下来,在列表生成器中,创建所需列的名称并对其进行重命名。总之:

import pandas as pd
import numpy as np
df = pd.read_csv('df2.csv', header=0)
df1 = df.pivot_table(index=['Date', 'Company'], columns='Quarter', values='Mw')
df1 = df1.reset_index().sort_values(by='Date')
df1.rename_axis(None, axis=1, inplace=True)
df1 = df1.set_index(np.arange(0, len(df1)))
hist = len(df1.columns)
arr = ['00:00' + '-' + str(df1.columns[2])]
[arr.append(df1.columns[i - 1] + '-' + df1.columns[i]) for i in range(3, hist)]
df1.columns.values[2:] = arr#Renaming columns
print(df1)

输出

Date    Company  00:00-00:15  00:15-00:30  00:30-00:45
0  01.07.2022  Company A            0            0         -130
1  01.07.2022  Company B            0            0          120
2  01.07.2022  Company C           10            1          110
3  01.07.2022  Company D           15          150            0
4  02.07.2022  Company A            0           10         -180
5  02.07.2022  Company B            0            0          115
6  02.07.2022  Company C          160         -145          145
7  02.07.2022  Company D          180          150            0

最新更新