[英]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 |
您可以pivot
並merge
:
(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.