簡體   English   中英

使用列作為行加入 pandas

[英]Join in pandas using columns as rows

我正在嘗試在列樣本上加入這兩個 pandas 數據幀,以便“total_reads”對應於第二個 df 中該列的正確值。

樣本 下采樣 系列 total_reads
ERR4223677 Down_10 ERP120397 2500121
ERR4225180 下_50 ERP120397 12500608
ERR4225239 下_50 ERP120397 22190433
ERR4225273 下來_75 ERP120397 18750912
ERR4225325 原始數據 ERP120397 25001217
ERR4225370 下_25 ERP120397 11095216
ERR4225386 下來_75 ERP120397 33285650
ERR4225387 原始數據 ERP120397 44380867

系列 樣本 原始數據 下來_75 下_50 下_25 Down_10
ERP120397 ERR4223677 762828 666093 534468 342070 177346
ERP120397 ERR4225180 1304291 1085140 816593 467548 206039
ERP120397 ERR4225239 1007582 857346 664345 394410 180437
ERP120397 ERR4225273 872706 750629 592641 362647 172176
ERP120397 ERR4225325 1052892 900727 701227 420112 187159
ERP120397 ERR4225370 913854 771552 590478 347846 159422
ERP120397 ERR4225386 1174005 995511 767682 455647 204522

您可以pivotmerge

(df2.merge(df1.pivot(['Series', 'Sample'], 'Downsample', 'total_reads').add_suffix('_total'),
           left_on=['series', 'sample'], right_index=True)
    .sort_index(axis=1)
)

output:

   Down_10  Down_10_total  Down_25  Down_25_total  Down_50  Down_50_total  \
0   177346      2500121.0   342070            NaN   534468            NaN   
1   206039            NaN   467548            NaN   816593     12500608.0   
2   180437            NaN   394410            NaN   664345     22190433.0   
3   172176            NaN   362647            NaN   592641            NaN   
4   187159            NaN   420112            NaN   701227            NaN   
5   159422            NaN   347846     11095216.0   590478            NaN   
6   204522            NaN   455647            NaN   767682            NaN   

   Down_75  Down_75_total  Raw_Data  Raw_Data_total      sample     series  
0   666093            NaN    762828             NaN  ERR4223677  ERP120397  
1  1085140            NaN   1304291             NaN  ERR4225180  ERP120397  
2   857346            NaN   1007582             NaN  ERR4225239  ERP120397  
3   750629     18750912.0    872706             NaN  ERR4225273  ERP120397  
4   900727            NaN   1052892      25001217.0  ERR4225325  ERP120397  
5   771552            NaN    913854             NaN  ERR4225370  ERP120397  
6   995511     33285650.0   1174005             NaN  ERR4225386  ERP120397  
join替代
(df2
 .set_index(['series', 'sample']).rename_axis(['Series', 'Sample'])
 .join(df1.pivot(['Series', 'Sample'], 'Downsample', 'total_reads').add_suffix('_total'))
 .sort_index(axis=1)
 .reset_index()
)

output:

      Series      Sample  Down_10  Down_10_total  Down_25  Down_25_total  \
0  ERP120397  ERR4223677   177346      2500121.0   342070            NaN   
1  ERP120397  ERR4225180   206039            NaN   467548            NaN   
2  ERP120397  ERR4225239   180437            NaN   394410            NaN   
3  ERP120397  ERR4225273   172176            NaN   362647            NaN   
4  ERP120397  ERR4225325   187159            NaN   420112            NaN   
5  ERP120397  ERR4225370   159422            NaN   347846     11095216.0   
6  ERP120397  ERR4225386   204522            NaN   455647            NaN   

   Down_50  Down_50_total  Down_75  Down_75_total  Raw_Data  Raw_Data_total  
0   534468            NaN   666093            NaN    762828             NaN  
1   816593     12500608.0  1085140            NaN   1304291             NaN  
2   664345     22190433.0   857346            NaN   1007582             NaN  
3   592641            NaN   750629     18750912.0    872706             NaN  
4   701227            NaN   900727            NaN   1052892      25001217.0  
5   590478            NaN   771552            NaN    913854             NaN  
6   767682            NaN   995511     33285650.0   1174005             NaN  

暫無
暫無

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

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