【问题标题】:Subtract value from slice从切片中减去值
【发布时间】:2021-11-07 12:03:39
【问题描述】:

我想从切片中减去一个值,以便更新这些行,但是,这些行永远不会改变。

df
A B C
1 1 3
2 3 4
5 6 8
2 3 4

idx = 1
val = 2
df.iloc[idx:-1,0].sub(val)

想要的结果:

A B C
1 1 3
0 3 4
3 6 8
0 3 4

我也尝试过以下方法

df.iloc[idx:-1,0] = df.iloc[idx:-1,0].sub(val)

【问题讨论】:

    标签: python pandas slice


    【解决方案1】:

    -= 更容易:

    >>> df.iloc[idx:, 0] -= val
    >>> df
       A  B  C
    0  1  1  3
    1  0  3  4
    2  3  6  8
    3  0  3  4
    >>> 
    

    您的代码不起作用的原因是因为您将-1 添加到切片的末尾,这将跳过最后一个值,因此请尝试修复您的代码:

    df.iloc[idx:, 0] = df.iloc[idx:, 0].sub(val)
    

    【讨论】:

    • 非常感谢!我认为 -1 意味着到最后,但它却忽略了最后一个。为了检查我的值,我使用了 df.tail(1),它是没有改变的条目,让我相信没有任何改变。
    猜你喜欢
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 2023-04-04
    相关资源
    最近更新 更多