我的数据框df1为:
col1 col2 Val1 Val2
A g 4 6
A d 3 8
B h 5 10
B p 7 14
我还有另一个数据框df2:
col1 Val1 Val2
A 2 3
B 1 4
我想基于col1,val1和val2将df1除以df2,以便df2中的行A
将A
中的行df1
都除掉。
我对df1.div(df2)
的最终输出如下:
col1 col2 Val1 Val2
A g 2 2
A d 1.5 2
B h 5 2.5
B p 7 3.5
答案 0 :(得分:2)
将col1
和col2
转换为MultiIndex
,还将第二col1
的{{1}}转换为索引,然后使用DataFrame.div
:
DataFrame
答案 1 :(得分:1)
您可以使用pandas.merge()
function执行database-like join between dataframes,然后使用结果除以列值:
# merge against col1 so we get a merged index
merged = pd.merge(df1[["col1"]], df2)
df1[["Val1", "Val2"]] = df1[["Val1", "Val2"]].div(merged[["Val1", "Val2"]])
这将产生:
col1 col2 Val1 Val2
0 A g 2.0 2.000000
1 A d 1.5 2.666667
2 B h 5.0 2.500000
3 B p 7.0 3.500000