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

jax*_*jax 15 python pandas

我有一个数据框假设:

name age hb
ali  34  14
jex  16  13
aja  24  16
joy  23  12
Run Code Online (Sandbox Code Playgroud)

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

新专栏可能是:

hb
9
8
11
7
Run Code Online (Sandbox Code Playgroud)

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

感谢致敬.

Ana*_*mar 20

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

df['hb'] - 5 #Where `df` is your dataframe.
Run Code Online (Sandbox Code Playgroud)

演示 -

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
Run Code Online (Sandbox Code Playgroud)

  • 我们如何将新的值集分配给 Py3 中的“hb”列,而不得到“A value is attempts to be set on a copy of a slice from a DataFrame”。警告?谢谢 (3认同)

Col*_*ony 7

您也可以使用pandas.apply函数执行此操作

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


小智 6

如果你正在使用这个:

df['hb'] - 5
Run Code Online (Sandbox Code Playgroud)

你会得到一个新的单列。但是,如果您想保留其余部分,则必须使用:

df['hb'] -= 5
Run Code Online (Sandbox Code Playgroud)