串联熊猫数据框后重置组数

时间:2019-06-21 08:37:13

标签: python pandas dataframe

我正在执行数据处理,并且在连接熊猫数据帧后弄清楚如何重置组计数器时遇到问题。下面是一个示例来说明我的问题:

例如,我有两个数据框:

   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

我试图将所有数据帧向上移位一格,并将移位后的值与原始值进行比较,如果原始值大于移位后的值,则将原始值添加到其下方的所有值中。但是由于嘈杂的原始数据,这种解决方案并不总是有效。

2 个答案:

答案 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