熊猫:在顺序无关紧要的子集中查找重复项并将它们组合在一起



像这样的df的正确方法是什么:

>>>df
treatment   mutation_1    mutation_2    resistance    frequency
0      a         hpc            abc            1.2           3
1      a         awd            jda            2.1           4
2      b         abc            hpc            1.2           5

对此:

mutation_1   mutation_2   resistance   frequency_a   frequency_b 
0         hpc          abc           1.2          3              5
1         awd          jda           2.1          4              0

请注意,列a & b中的顺序无关紧要。

编辑:为清楚起见,在我的示例中更改了列名称

编辑2:我添加了阻力列,这对我来说很重要。

首先,您要对感兴趣的列进行水平排序,然后透视:

cols = ['mutation_1','mutation_2']
df[cols] = np.sort(df[cols],1)
(df.pivot_table(index=cols,                 
columns='treatment', 
values='frequency')
.rename(columns=lambda x: f'frequency_{x}')    # rename as needed
.reset_index())                                # reset index to columns

输出:

treatment mutation_1 mutation_2  frequency_a  frequency_b
0                abc        hpc          3.0          5.0
1                awd        jda          4.0          NaN

最新更新