我想根据"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