熊猫将两个大小不同的数据框分开

时间:2020-01-19 14:38:38

标签: python pandas python-3.5

我的数据框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中的行AA中的行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

2 个答案:

答案 0 :(得分:2)

col1col2转换为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
相关问题