我正在执行数据处理,并且在连接熊猫数据帧后弄清楚如何重置组计数器时遇到问题。下面是一个示例来说明我的问题:
例如,我有两个数据框:
Counter Value
0 1 3
1 1 4
2 1 2
3 2 4
4 2 10
Counter Value
0 1 8
1 1 10
2 2 2
3 2 4
4 2 10
串联后,我得到:
Counter Value
0 1 3
1 1 4
2 1 2
3 2 4
4 2 10
0 1 8
1 1 10
2 2 2
3 2 4
4 2 10
,我想重置计数器并使它连续,并使计数器值比最后一组计数器大一位。
Counter Value
0 1 3
1 1 4
2 1 2
3 2 4
4 2 10
0 3 8
1 3 10
2 4 2
3 4 4
4 4 10
我试图将所有数据帧向上移位一格,并将移位后的值与原始值进行比较,如果原始值大于移位后的值,则将原始值添加到其下方的所有值中。但是由于嘈杂的原始数据,这种解决方案并不总是有效。
答案 0 :(得分:3)
在连接之前,您只需将第一个数据帧的Counter
列中的最大值添加到第二个数据帧中,即可:
df2.Counter += df1.Counter.max()
pd.concat([df1, df2], ignore_index=True)
Counter Value
0 1 3
1 1 4
2 1 2
3 2 4
4 2 10
5 3 8
6 3 10
7 4 2
8 4 4
9 4 10
答案 1 :(得分:1)
或者使用shift()
的另一种方式:
df=pd.concat([df1,df2])
df=df.assign(Counter_1=df.Counter.ne(df.Counter.shift()).cumsum())
#for same col df=df.assign(Counter=df.Counter.ne(df.Counter.shift()).cumsum())
Counter Value Counter_1
0 1 3 1
1 1 4 1
2 1 2 1
3 2 4 2
4 2 10 2
0 1 8 3
1 1 10 3
2 2 2 4
3 2 4 4
4 2 10 4