我遇到的问题是我想对数据框进行分组,然后使用函数在分组后对数据进行操作。例如,我想按日期对数据进行分组,然后迭代日期组中的每一行来解析函数?对数据框中的组进行迭代
的问题是GROUPBY似乎产生了关键的元组,然后由所有在做的每一行不可能迭代的数据行的大规模串
我遇到的问题是我想对数据框进行分组,然后使用函数在分组后对数据进行操作。例如,我想按日期对数据进行分组,然后迭代日期组中的每一行来解析函数?对数据框中的组进行迭代
的问题是GROUPBY似乎产生了关键的元组,然后由所有在做的每一行不可能迭代的数据行的大规模串
当您在数据框应用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
产生类似的索引数据框(见说明文档)或dfGroupby.agg
,如果你想产生汇总结果。
你会做这样的事情:
r = df.groupby('Date').apply(your_function)
你会定义功能:
def your_function(df):
... # operation on df
return result
如果您有与实施中的问题,请打开一个新的问题,发表您的数据和你的代码,以及任何相关的错误/回溯。快乐的编码。
但是,如果我应用于该组的功能需要原始数据帧的一列,例如在你的例子中,按ID分解日期,但是如果函数依赖于该组内的天数值作为参数呢? – Tolki
@Tolki我应该如何知道如何在没有看到您的代码或数据的情况下回答您?请用更具体的细节开新的问题。我无法给你提供抽象问题的答案。 –
你应该发布你的代码和期望的结果。 –