簡體   English   中英

將值從一個數據幀映射到另一個數據幀

[英]map value from one dataframe to another dataframe

我有一個數據框:

df1 = pd.DataFrame(data = {'x_axis': ['p1','p2','p2','p4','p4'],
                          'y_axis': [1,2,3,1,5],
                          'error_type_A': ['error 2', 'error 1', 'error 1', 'error 2', 'error 1'],
                          'error_type_B': ['error 3','error 4','','error 3','error 4']})

我想要的是像下面這樣的新數據框: 在此處輸入圖片說明

我怎樣才能做到這一點?

首先使用df.set_indexy_axisx_axis設置為索引。 然后使用df.agg ,使用df.unstack

df1.set_index(['y_axis', 'x_axis']).agg(", ".join, axis=1).unstack(fill_value='')

x_axis                p1                p2                p4
y_axis                                                      
1       error 2, error 3                    error 2, error 3
2                         error 1, error 4                  
3                                  error 1                  
5                                           error 1, error 4

使用DataFrame.melt以消除可能的遺漏值和重塑通過DataFrame.pivot_table ,然后添加缺少的列和索引值DataFrame.reindex通過和最后刪除索引和列名DataFrame.rename_axis

df1 = df1.replace('', np.nan)
cols = [f'p{x}' for x in range(1,6)]
idx = range(1,6)
df1 = (df1.melt(['x_axis','y_axis'])
         .dropna()
         .pivot_table(index='y_axis', 
                      columns='x_axis', 
                      values='value', 
                      aggfunc=','.join, 
                      fill_value='')
         .reindex(columns=cols,index=idx, fill_value='')
         .rename_axis(index=None, columns=None))
print (df1)
                p1               p2 p3               p4 p5
1  error 2,error 3                      error 2,error 3   
2                   error 1,error 4                       
3                           error 1                       
4                                                         
5                                       error 1,error 4   

暫無
暫無

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

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