【发布时间】:2021-05-10 16:59:24
【问题描述】:
我有下表:
B C
0 banana False
1 apple True
2 banana True
3 apple False
4 apple True
5 banana True
6 apple False
7 apple True
8 apple True
9 apple False
我需要在“C”列中找到所有连续的组,并用“B”列中每个组之前的值填充这些组。我可以通过以下方式实现:
consec_groups = (df['C'] != df['C'].shift()).cumsum()
df['Result'] = df['B'].shift().groupby(consec_groups).transform('first')
B C Result
0 banana False NaN
1 apple True banana
2 banana True banana
3 apple False banana
4 apple True apple
5 banana True apple
6 apple False banana
7 apple True apple
8 apple True apple
9 apple False apple
如果我有另一列“A”对所有数据进行分组,我该怎么做。所以我想分别对“A”列中的每个组执行相同的操作。例如:
A B C
0 1 banana False
1 1 apple True
2 1 banana True
3 1 apple False
4 1 apple True
5 2 banana True
6 2 apple False
7 2 apple True
8 2 apple True
9 2 apple False
想要的结果:
A B C Result
0 1 banana False NaN
1 1 apple True banana
2 1 banana True banana
3 1 apple False banana
4 1 apple True apple
5 2 banana True NaN
6 2 apple False banana
7 2 apple True apple
8 2 apple True apple
9 2 apple False apple
【问题讨论】:
标签: python pandas numpy pandas-groupby