熊猫-将分组的列合并到另一个数据框

时间:2019-03-18 05:17:13

标签: python-3.x pandas dataframe

我的一个数据框包含列

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

,另一个具有[EDIT]

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

我该怎么做?谢谢! :)

2 个答案:

答案 0 :(得分:1)

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

加载数据框:

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 上使用以下汇总功能进行分组:

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

希望这会有所帮助。

答案 1 :(得分: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)})