我遇到的问题是我想对数据帧进行分组,然后使用函数在数据分组后对其进行操作。例如,我想按日期对数据进行分组,然后遍历日期组中的每一行来解析函数?
问题是groupby似乎创建了一个键的元组,然后是一个由数据中的所有行组成的大量字符串,使得每行都不可能迭代
答案 0 :(得分:3)
在数据框上应用groupby
时,如果没有行,则会获得数据帧组。例如,考虑:
df
ID Date Days Volume/Day
0 111 2016-01-01 20 50
1 111 2016-02-01 25 40
2 111 2016-03-01 31 35
3 111 2016-04-01 30 30
4 111 2016-05-01 31 25
5 111 2016-06-01 30 20
6 111 2016-07-01 31 20
7 111 2016-08-01 31 15
8 111 2016-09-01 29 15
9 111 2016-10-01 31 10
10 111 2016-11-01 29 5
11 111 2016-12-01 27 0
0 112 2016-01-01 31 55
1 112 2016-01-02 26 45
2 112 2016-01-03 31 40
3 112 2016-01-04 30 35
4 112 2016-01-05 31 30
5 112 2016-01-06 30 25
6 112 2016-01-07 31 25
7 112 2016-01-08 31 20
8 112 2016-01-09 30 20
9 112 2016-01-10 31 15
10 112 2016-01-11 29 10
11 112 2016-01-12 31 0
for i, g in df.groupby('ID'):
print(g, '\n')
ID Date Days Volume/Day
0 111 2016-01-01 20 50
1 111 2016-02-01 25 40
2 111 2016-03-01 31 35
3 111 2016-04-01 30 30
4 111 2016-05-01 31 25
5 111 2016-06-01 30 20
6 111 2016-07-01 31 20
7 111 2016-08-01 31 15
8 111 2016-09-01 29 15
9 111 2016-10-01 31 10
10 111 2016-11-01 29 5
11 111 2016-12-01 27 0
ID Date Days Volume/Day
0 112 2016-01-01 31 55
1 112 2016-01-02 26 45
2 112 2016-01-03 31 40
3 112 2016-01-04 30 35
4 112 2016-01-05 31 30
5 112 2016-01-06 30 25
6 112 2016-01-07 31 25
7 112 2016-01-08 31 20
8 112 2016-01-09 30 20
9 112 2016-01-10 31 15
10 112 2016-01-11 29 10
11 112 2016-01-12 31 0
对于您的情况,您应该查看dfGroupby.apply
,如果您想对您的群组应用某些功能,dfGroupby.transform
以生成类似索引的数据框(请参阅文档以获取解释)或{{3} },如果你想产生汇总的结果。
你会做类似的事情:
r = df.groupby('Date').apply(your_function)
您将功能定义为:
def your_function(df):
... # operation on df
return result
如果您遇到实施问题,请打开一个新问题,发布您的数据和代码,以及任何相关的错误/追溯。快乐的编码。