如何加入数据框中共享相同名称的列

xia*_*hir 3 python join duplicates pandas

我是熊猫的新手。我的 df 看起来像这样:

  A   A   A   B   B   B
a NaN NaN 2   NaN NaN 5
b NaN 1   NaN 9   NaN NaN
c 3   NaN     NaN 7   NaN
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到

  A   B 
a 2   5
b 1   9 
c 3   7
Run Code Online (Sandbox Code Playgroud)

看起来合并、连接是针对多个数据帧的。我也试过

df.groupby(by=[A,B], axis=1)
Run Code Online (Sandbox Code Playgroud)

但得到

ValueError: Grouper and axis must be same length
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 5

我相信您需要使用聚合函数指定第一级,例如sum, mean, first, last...:

import pandas as pd

df = df.groupby(level=0, axis=1).sum()
print (df)
     A    B
a  2.0  5.0
b  1.0  9.0
c  3.0  7.0
Run Code Online (Sandbox Code Playgroud)

如果需要按名称过滤列,请使用子集:

df = df[['A','B']].groupby(level=0, axis=1).sum()
Run Code Online (Sandbox Code Playgroud)

如果使用索引值:

df1 = df.T
print (df1)
     a    b    c
A  NaN  NaN  3.0
A  NaN  1.0  NaN
A  2.0  NaN  NaN
B  NaN  9.0  7.0
B  NaN  NaN  NaN
B  5.0  NaN  NaN

df = df1.groupby(level=0).sum()
#default parameter axis=0 should be omit above
#df = df1.groupby(level=0, axis=0).sum()
print (df)
     a    b    c
A  2.0  1.0  3.0
B  5.0  9.0  7.0
Run Code Online (Sandbox Code Playgroud)