迭代数据帧中的组

Tol*_*lki 0 python group-by dataframe pandas pandas-groupby

我遇到的问题是我想对数据框进行分组,然后在分组后使用函数来操作数据。例如,我想按日期对数据进行分组,然后遍历日期组中的每一行以解析为函数?

问题是 groupby 似乎创建了一个键的元组,然后是一个由数据中的所有行组成的大量字符串,使得遍历每一行变得不可能

cs9*_*s95 7

当您申请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  112  2016-01-01    31          55
6  112  2016-01-02    26          45
7  112  2016-01-03    31          40
8  112  2016-01-04    30          35
9  112  2016-01-05    31          30
Run Code Online (Sandbox Code Playgroud)

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 

    ID        Date  Days  Volume/Day
5  112  2016-01-01    31          55
6  112  2016-01-02    26          45
7  112  2016-01-03    31          40
8  112  2016-01-04    30          35
9  112  2016-01-05    31          30 
Run Code Online (Sandbox Code Playgroud)

对于您的情况,您可能应该查看dfGroupby.apply,如果您想对您的组应用某些功能,dfGroupby.transform以生成类似索引的数据框(请参阅文档以获取解释),或者dfGroupby.agg,如果您想生成聚合结果。

你会做这样的事情:

r = df.groupby('Date').apply(your_function) 
Run Code Online (Sandbox Code Playgroud)

您将函数定义为:

def your_function(df):
    ... # operation on df
    return result
Run Code Online (Sandbox Code Playgroud)

如果您在实施中遇到问题,请打开一个新问题,发布您的数据和代码,以及任何相关的错误/回溯。快乐编码。