簡體   English   中英

根據列值將數據從一個 Pandas 數據幀復制到另一個

[英]Copying data from one pandas dataframe to other based on column value

我有兩個數據框 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 的單元格值從 df2 中的 df1 復制列,這是 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM