我有一个数据框假设:
name age hb
ali 34 14
jex 16 13
aja 24 16
joy 23 12
我有一个值“5”,我想从列“hb”的每个成员中减去
新专栏可能是:
hb
9
8
11
7
这样做的最佳方法是什么......
感谢和问候。
答案 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