我有两个数据帧。
数据1 =
Variables A_0 B_0
Bins
1 200 100
2 100 150
3 100 300
4 100 200
5 150 100
数据2 =
Variables A_1 B_1
Bins
1 50 100
2 100 150
3 50 50
4 100 200
5 100 100
现在我想创建一个数据帧,给出data2
单元格值的百分比,比如对于A_1
,Bins = 1有50个值,对于A_0
,Bins=1有200个值,所以百分比变成(50/(200+50)) = 0.2
。
所以我想要的最终数据帧如下所示。
data2_perc =
Variables A_1_perc B_1_perc
Bins
1 0.2 0.5
2 0.5 0.5
3 0.33 0.1428
4 0.5 0.5
5 0.4 0.5
怎么做?
data2_perc = pd.DataFrame()
data2_perc['A_1_perc'] = data2['A_1']/(data2['A_1']+data1['A_0'])
data2_perc['B_1_perc'] = data2['B_1']/(data2['B_1']+data1['B_0'])
结果:
A_1_perc B_1_perc
1 0.200000 0.500000
2 0.500000 0.500000
3 0.333333 0.142857
4 0.500000 0.500000
5 0.400000 0.500000
IIUC,
创建空数据框
data2_perc=pd.DataFrame()
然后使用以下代码获取所需的输出
data2_perc['A_1_perc']=data2['A_1']/(data2['A_1']+data1['A_0'])
data2_perc['B_1_perc']=data2['B_1']/(data2['B_1']+data1['B_0'])
您可以rename
data1
、sum
、divide
和最后添加DataFrame.add_suffix
列:
d = dict(zip(data1.columns,data2.columns))
df = (data2 / (data1.rename(columns=d) + data2)).add_suffix('_perc')
print (df)
A_1_perc B_1_perc
Variables
1 0.200000 0.500000
2 0.500000 0.500000
3 0.333333 0.142857
4 0.500000 0.500000
5 0.400000 0.500000