Python groupby操作后添加重复列

Python groupby操作后添加重复列,python,pandas,Python,Pandas,我试图在数据帧的单个列上连续应用2个groupby操作,在应用groupby操作后,又添加了一列,这不允许我应用第二个groupby 我找过类似的问题,找不到。这是一个正常的操作还是如何消除groupby操作中的额外列。我尝试过将更改为索引,组键选项,但都不起作用 df1 期待做 df1.groupby(df1['SUB'].ffill()).ffill().groupby('SUB').bfill() groupby之后的当前输出(添加了额外的“子”列) 预期产量 SUB CAT C

我试图在数据帧的单个列上连续应用2个groupby操作,在应用groupby操作后,又添加了一列,这不允许我应用第二个groupby

我找过类似的问题,找不到。这是一个正常的操作还是如何消除groupby操作中的额外列。我尝试过将
更改为索引
组键
选项,但都不起作用

df1

期待做

df1.groupby(df1['SUB'].ffill()).ffill().groupby('SUB').bfill()
groupby之后的当前输出(添加了额外的“子”列)

预期产量

    SUB CAT CODE    CODE1
0   123 NaN NaN     NaN 
1   123 SKU NaN     NaN 
2   123 SKU 1000123 NaN 
3   123 SKU 1000234 NaN 
4   456 NaN NaN     NaN
5   456 LIQ NaN     NaN
6   456 LIQ NaN   1000345
7   456 LIQ NaN   1000534
8   456 LIQ NaN   1000433

在网上查找时,我发现github中报告了一个bug,如下所示:

作为解决方法,请尝试以下方法:

df.groupby(df.SUB.ffill())[df.columns.difference(['SUB'])].ffill()


使用
.fillna
指定方法
.fillna(method='ffill')
,是
.ffill
的同义词,但它没有针对分组设置错误

df.groupby(df.SUB.ffill()).fillna(method='ffill')

   CAT       CODE      CODE1    SUB
0  NaN        NaN        NaN  123.0
1  SKU        NaN        NaN  123.0
2  SKU  1000123.0        NaN  123.0
3  SKU  1000234.0        NaN  123.0
4  NaN        NaN        NaN  456.0
5  LIQ        NaN        NaN  456.0
6  LIQ        NaN  1000345.0  456.0
7  LIQ        NaN  1000534.0  456.0
8  LIQ        NaN  1000433.0  456.0

是的@anky_91,我们可以明确指出:)。我想知道pandas groupby是否被允许提供这样的重复列,或者我看到的删除的可能性。让我查一下我发现了这个:哦,熊猫的虫子然后:0,请将它添加到你的答案中,我会接受它并结束这个问题。同样@Naga Kiran.)感谢您的回答@anky_91,我们可以明确地指出:)。我想知道pandas groupby是否被允许提供这样的重复列或删除的可能性。当然我会合并。[.fillna]方法工作良好,不会重复类似于[.ffill]的列。谢谢你的回复@ALollz,
df.groupby(df.SUB.ffill())[df.columns.difference(['SUB'])].ffill()
     SUB  CAT       CODE      CODE1
0  123.0  NaN        NaN        NaN
1  123.0  SKU        NaN        NaN
2  123.0  SKU  1000123.0        NaN
3  123.0  SKU  1000234.0        NaN
4  456.0  NaN        NaN        NaN
5  456.0  LIQ        NaN        NaN
6  456.0  LIQ        NaN  1000345.0
7  456.0  LIQ        NaN  1000534.0
8  456.0  LIQ        NaN  1000433.0
df.groupby(df.SUB.ffill()).fillna(method='ffill')

   CAT       CODE      CODE1    SUB
0  NaN        NaN        NaN  123.0
1  SKU        NaN        NaN  123.0
2  SKU  1000123.0        NaN  123.0
3  SKU  1000234.0        NaN  123.0
4  NaN        NaN        NaN  456.0
5  LIQ        NaN        NaN  456.0
6  LIQ        NaN  1000345.0  456.0
7  LIQ        NaN  1000534.0  456.0
8  LIQ        NaN  1000433.0  456.0