我在某种简单的问题上苦苦挣扎。希望有一个简单的解决方案。我的数据框看起来像这样。
DataFrame:
8 buy 4
7 sell 1
6 buy 1
5 sell 3
4 sell 10
3 buy 100
2 buy 110
1 buy 120
有没有办法添加相继出现的相同订单?因此,将df转换为:
DataFrame:
8 buy 4
7 sell 1
6 buy 1
4 sell 3 + 10
1 buy 100 + 110 + 120
我的问题有点复杂。我认为可以通过迭代来解决,但希望有一个更简单的解决方案。
最佳答案
将agg
与groupby
一起使用
df.groupby((df.b!=df.b.shift()).ne(0).cumsum()).agg({'a':'last','c':lambda x : '+'.join(x.astype(str)),'b':'first'})
Out[1227]:
a c b
b
1 8 4 buy
2 7 1 sell
3 6 1 buy
4 4 3+10 sell
5 1 100+110+120 buy
数据输入 :
df
Out[1228]:
a b c
0 8 buy 4
1 7 sell 1
2 6 buy 1
3 5 sell 3
4 4 sell 10
5 3 buy 100
6 2 buy 110
7 1 buy 120
更多信息 :
(df.b!=df.b.shift()).ne(0).cumsum()
Out[1229]:
0 1
1 2
2 3
3 4
4 4
5 5
6 5
7 5
Name: b, dtype: int32
关于python - Pandas 数据框基于键减少/添加行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47780312/