使用Pandas组合数据框中两行的不同部分

我有一个像下方的大(> 10000行)数据帧,我必须由行具有相同名称结合COL_1,COL_2,col_3基团的col_4,col_5组bc组bÇ不会同时存在)。

我可以在网上找到如何组合(相加)每一列的行,而不是放在不同的部分。

原始数据框

姓名 团体 col_1 col_2 col_3 col_4 col_5
一种 1 NaN 2 3 NaN
1 NaN NaN 2 3
一种 0 1 2 1 NaN
C 0 NaN NaN 3 NaN
一种 2 3 NaN NaN NaN

回答

一个特设的方法的位,但你可以做到这一点的一种方式是通过名称和组排序的数据帧,然后分割你的df分为两个部分(即COL1 / 2/3组),执行groupby和使用first()上第一个dflast()第二个,然后使用concat以下方法重新组合在一起:

import pandas as pd

df.sort_values(['name','group'],ascending=True,inplace=True)

one = df.iloc[:,:5]
two = pd.concat([df.iloc[:,:2],df[['col_4','col_5']]],axis=1)

def my_func(df1,df2,col):
    return pd.concat([df1.groupby(col).first(),
                      df2.groupby(col).last()],
                      axis=1).drop('group',axis=1)
 
res = my_func(one,two,'name')

哪个打印:

print(res)
      col_1  col_2  col_3  col_4  col_5
name                                   
ann       1    NaN   2.00   2.00   3.00
ben       0   1.00   2.00   3.00    NaN
cat       2   3.00    NaN    NaN    NaN

如果我没记错的话,这可以满足您的需求。


以上是使用Pandas组合数据框中两行的不同部分的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>