【问题标题】:subtracting two dataframes减去两个数据帧
【发布时间】:2017-04-20 15:38:59
【问题描述】:

df1:

City, 2015-12-31, 2016-01-31, ...
YYZ  562.14, -701.18, ...
DFW  562.14, -701.18, ...
YYC  562.14, -701.18, ...

df2:

City, 2015-12-31, 2016-01-31, ...
SFO  562.14, -701.18, ...
PDX  562.14, -701.18, ...
LAX  562.14, -701.18, ...

我想从 df2 中减去 df1。即减去相应日期列中的值。

我尝试了以下方法:

df2.subtract(df1, fill_value=0)

但我收到以下错误:

TypeError: unsupported operand type(s) for -: 'str' and 'float'

我认为错误是因为该操作无法理解如何减去 City 列中的字符串,这显然是有道理的,因为减去 Cities 是无意义的。

这篇文章[link] 中接受的答案似乎表明这是可能的。我是那个问题的作者,但现在似乎无法让它发挥作用。

【问题讨论】:

    标签: pandas subtraction


    【解决方案1】:

    将 City 列移动到索引中。 DataFrames 将首先按索引和列对齐,然后进行减法。任何不存在的组合都将导致NaN

    df2.set_index('City').subtract(df1.set_index('City'), fill_value=0)
    

    【讨论】:

    • 如果我的数据框还包含非数字列,我该怎么做?
    【解决方案2】:

    这行得通吗?

    df2.drop(['City']).subtract(df1.drop(['City']))
    

    【讨论】:

    • 谢谢,它在类似情况下对我有用,但添加axis = 1,基本上以这种形式:df2.drop(['City'],axis=1).subtract(df1.drop (['City'],axis=1))
    猜你喜欢
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多