我的一个数据框包含列
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
我怎样才能做到这一点?谢谢! :)
首先,我假设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']]
这给了我们:
最后,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)
这给了我们:
希望这可以帮助。
我想你正在寻找这个:
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)})