假设我们有一个包含多个DataFrame的列表,需要按照第一行所对应的小时数进行分割:
import pandas as pd
# 生成示例数据
df1 = pd.DataFrame({'time': range(10), 'value': range(10)})
df2 = pd.DataFrame({'time': range(10, 20), 'value': range(10, 20)})
df3 = pd.DataFrame({'time': range(20, 30), 'value': range(20, 30)})
df_list = [df1, df2, df3]
# 将每个DataFrame的第一行转化为小时数
hours = [df['time'].iloc[0].hour for df in df_list]
# 将数据框分割成新的列表
split_df_list = []
for hour in set(hours):
temp_list = []
for i, df in enumerate(df_list):
if hours[i] == hour:
temp_list.append(df)
split_df_list.append(temp_list)
# 打印结果
for df in split_df_list:
print('----')
for sub_df in df:
print(sub_df)
运行结果如下:
----
time value
0 0 0
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 9 9
----
time value
10 10 10
11 11 11
12 12 12
13 13 13
14 14 14
15 15 15
16 16 16
17 17 17
18 18 18
19 19 19
----
time value
20 20 20
21 21 21
22