如何根据 pandas 中第三列的条件将值附加到两列?

How can I append values to two columns based on condition of a third column in pandas?

我想根据列 'Treatment' 的值添加 x=0 和 y = 1.30 或 1.60。目前我只附加了 y 的两个值之一(在本例中为 1.60),但这并不完全正确,因为治疗 'White_FR'.

的值应该是 1.30

这是数据框

df_tot

       Treatment        y        x     Individual 
0       White       21.982733   800   Data20210608
1       White       21.973003   800   Data20210508  
2       White       21.968242   800   Data20210408  
15      White_FR    22.139293   800   Data20210608  
16      White_FR    22.159840   800   Data20210508  
17      White_FR    22.162254   800   Data20210408  

我想要这样的东西:

df_tot_new

       Treatment        y        x     Individual 
        White       21.982733   800  Data20210608
        White       1.60        0    Data2021608  #new
        White       21.973003   800  Data20210508   
        White       1.60        0    Data2021608 #new
        White       21.968242   800  Data20210408   
        White       1.60        0    Data2021608 #new
        White_FR    22.139293   800  Data20210608
        White_FR    1.30        0    Data2021608 #new
        White_FR    22.159840   800  Data20210508   
        White_FR    1.30        0    Data2021608 #new
        White_FR    22.162254   800  Data20210408    
        White_FR    1.30        0    Data2021608 #new

这是代码:

 df_tot['y'] = df_tot.append([{'y':1.60}, {'x':0}], ignore_index=True)
 

在这种情况下,复制数据框,修改副本,然后将它们连接在一起并按索引排序会更容易:

tmp = df.copy()
tmp['y'] = tmp['Treatment'].map({'White': 1.60, 'White_FR': 1.30})
tmp['x'] = 0

df = pd.concat([df, tmp]).sort_index().reset_index(drop=True)

输出:

>>> df
   Treatment          y    x    Individual
0      White  21.982733  800  Data20210608
1      White   1.600000    0  Data20210608
2      White  21.973003  800  Data20210508
3      White   1.600000    0  Data20210508
4      White  21.968242  800  Data20210408
5      White   1.600000    0  Data20210408
6   White_FR  22.139293  800  Data20210608
7   White_FR   1.300000    0  Data20210608
8   White_FR  22.159840  800  Data20210508
9   White_FR   1.300000    0  Data20210508
10  White_FR  22.162254  800  Data20210408
11  White_FR   1.300000    0  Data20210408