Python groupby操作后添加重复列
我试图在数据帧的单个列上连续应用2个groupby操作,在应用groupby操作后,又添加了一列,这不允许我应用第二个groupby 我找过类似的问题,找不到。这是一个正常的操作还是如何消除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
更改为索引
,组键
选项,但都不起作用
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