Pandas - 将分组列合并到另一个数据帧

问题描述 投票:0回答:2

我的一个数据框包含列

WR          K ID
SP-RS-001   K001
SP-RS-001   K002
SP-RS-001   K006
SP-RS-002   K002
SP-RS-002   K007
SP-RS-002   K008

另一个有[编辑]

U Code     CO Code    K ID
C001       C001.01    K001
C001       C001.02    K002
C001       C001.03    K006
C002       C002.01    K001
C002       C002.02    K006

我需要在这个数据框中给出另一列

U Code     K ID               WR
C001       K001, K002, K006   SP-RS-001, SP-RS-002
C002       K001, K006         SP-RS-001
C003       K002, K007         SP-RS-001, SP-RS-002

我怎样才能做到这一点?谢谢! :)

python-3.x pandas dataframe
2个回答
1
投票

首先,我假设C003输入是一个错误(在您的原始问题中),我相信以下内容对您有用。你想要哪种类型的合并并不明显,所以我假设了内部合并。

加载数据帧:

df1 = pd.DataFrame({'WR': ['SP-RS-001', 'SP-RS-001', 'SP-RS-001', 'SP-RS-002', 'SP-RS-002', 'SP-RS-002'],
                'K_ID': ['K001', 'K002', 'K006', 'K002', 'K007', 'K008']})

df2 = pd.DataFrame({'U_Code': ['C001', 'C001', 'C001', 'C002', 'C002'],
                    'C0_Code': ['C001.01', 'C001.02', 'C001.03', 'C002.01', 'C002.02'],
                    'K_ID': ['K001', 'K002', 'K006', 'K001', 'K006']})

继续K_ID:

df = df2.merge(df1, on='K_ID', how='inner')[['U_Code', 'K_ID', 'WR']]

这给了我们:

enter image description here

最后,U_CODE上的groupby具有以下聚合函数:

def f(x):
    return pd.Series(dict(K_ID = ', '.join(x['K_ID'].unique()), 
                    WR = ', '.join(x['WR'].unique())))

df = df.groupby(['U_Code']).apply(f)

这给了我们:

enter image description here

希望这可以帮助。


0
投票

我想你正在寻找这个:

df3 = df1.merge(df2, on = 'K ID')

df4 =df3.groupby('U Code')['K ID','WR'].agg({'K ID': lambda x: ','.join(x), 'WR': lambda x: ','.join(x)})
© www.soinside.com 2019 - 2024. All rights reserved.