如何使用pandas和python从列中减去单个值

时间:2015-10-15 05:24:49

标签: python pandas

我有一个数据框假设:

name age hb
ali  34  14
jex  16  13
aja  24  16
joy  23  12

我有一个值“5”,我想从列“hb”的每个成员中减去

新专栏可能是:

hb
9
8
11
7

这样做的最佳方法是什么......

感谢和问候。

5 个答案:

答案 0 :(得分:16)

简单地从pandas.Series中减去标量值,对于数字列,pandas会自动广播标量值并从列中的每个元素中减去它。示例 -

df['hb'] - 5 #Where `df` is your dataframe.

演示 -

In [43]: df
Out[43]:
  name  age  hb
0  ali   34  14
1  jex   16  13
2  aja   24  16
3  joy   23  12

In [44]: df['hb'] - 5
Out[44]:
0     9
1     8
2    11
3     7
Name: hb, dtype: int64

答案 1 :(得分:4)

您也可以使用pandas.apply函数

执行此操作

df["hb"] = df["hb"].apply(lambda x: x - 5)

答案 2 :(得分:1)

试试这个:

df["hb"] - 5

df["hb"]将选择hb列并从中减去5

答案 3 :(得分:1)

如果您使用的是此

df['hb'] - 5

您将获得一个新的单列。但是,如果要保留其余部分,则必须使用:

df['hb'] -= 5

答案 4 :(得分:0)

如果您希望将此减法保存在您的 DataFrame 中并避免使用旧的 SettingWithCopyWarning,请使用 loc

df.loc["hb"] -= 5

重要的是,如果您需要使用多个条件来选择值范围,请将两者都放入 loc 调用中(链接不适用于此):

df.loc[df.age==34,"hb"] -= 5