python - 从不同的 DataFrame 中减去值

标签 python pandas

我有两个 DataFrame,想要减去。

df1:

              Val1         Val2      Val3       
0  -27 -0.8  -6.786321    -7.024615 -13.946589  
1  -27 -0.9  -5.746795    -5.804550 -11.576365  
2  -27 -1.0  -4.624857    -4.372321  -9.103681  
3  -27 -1.2  -2.685832    -2.418888  -5.057056  
4  -27 -1.4  -1.445561    -1.389468  -2.622357  

df2:

       Bench
0      0.4601
1     -5.3336
2     -6.0163
3     -4.1776
4     -2.3472

由于我有相同的索引,我尝试执行:df1-df2,但没有成功。

因此我尝试使用另一种方式:

   headers = list(df1.columns.values)
   filtr_headers = filter(lambda x: x!='',headers)
         for i in filtr_headers:
                df1['%s' %(i)] = df1['%s' %(i)] - df2['Bench']

但是我得到了带有 NaN 值的返回 Dataframe。我不知道为什么会这样。任何提示将不胜感激。

最佳答案

您可以使用 pd.DataFrame.sub ,如下所示:

In [113]: df1.sub(df2.Bench.values, axis=0)
Out[113]: 
                Val1      Val2       Val3
0 -27 -0.8 -7.246421 -7.484715 -14.406689
1 -27 -0.9 -0.413195 -0.470950  -6.242765
2 -27 -1.0  1.391443  1.643979  -3.087381
3 -27 -1.2  1.491768  1.758712  -0.879456
4 -27 -1.4  0.901639  0.957732  -0.275157

关于python - 从不同的 DataFrame 中减去值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38904348/

相关文章:

python - Pandas 将数据帧的行转换为对角线数据帧

python - pandas dataframe : groupby by several columns, 应用函数并映射回结果

python - 如何对连续出现的 pandas 列值的索引进行分组

python - 用 manim 库画线?

python - 用于检测空序列的更好的 for 循环语法?

python - 如何确保捕获组超过 5 个字符?

python - Google Cloud Speech API python 代码示例可能存在错误

python - 如何使用 Django 在商店中创建 'product-filter'?

python - Pandas - 使用 .apply() 根据条件更新行中的值

python - Pandas:包含对列表的列