我有两个数据框 df1 和 df2 df1 如下所示
Index YH HE MT CU EI
0 Dot Sf Sy Lc
1 Rls Bd Sa Ta
2 Fs Ft Rg
df2就像
Index Z1 Z2 Z3
0 YH HE
1 HE EI
2 MT CU
我想根据 df2 中与 df1 中的列名称匹配的单元格值将值从 df1 复制到 df2 所以我的 df3 应该是这样的
df3
Index Z1 Z2 Z3
0 YH HE
1 Dot Sf
2 Rls Bd
3 Fs EI
4 HE CU
5 Sf Lc
6 Bd Ta
7 MT Rg
8 Sy
9 Sa
10 Ft
基本上我想根据 df2 的单元格值将 df1 中的列复制到 df2 中,它是 df1 中的列名
如果还是不明白请告诉我
最佳答案
这里涉及到很多函数...
s=df2.set_index('Index').astype(object).apply(lambda x : x.map(df1.set_index('Index').to_dict('l')))
m=pd.concat([df2.set_index('Index').applymap(lambda x : [x]),s]).sort_index().sum(level=0).sum()
pd.DataFrame(m.tolist(),index=m.index).T.reindex(columns=df2.columns[1:]).fillna('')
Out[1721]:
Z1 Z2 Z3
0 YH HE
1 Dot Sf
2 Rls Bd
3 Fs
4 HE EI
5 Sf
6 Bd
7
8 MT CU
9 Sy Lc
10 Sa Ta
11 Ft Rg
得到你所需要的
pd.DataFrame(m.tolist(),index=m.index).T.reindex(columns=df2.columns[1:]).replace('',np.nan).dropna(thresh=1,axis=0).fillna('')
Out[1724]:
Z1 Z2 Z3
0 YH HE
1 Dot Sf
2 Rls Bd
3 Fs
4 HE EI
5 Sf
6 Bd
8 MT CU
9 Sy Lc
10 Sa Ta
11 Ft Rg
关于python - 根据列值将数据从一个 Pandas 数据框复制到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48950791/