将函数应用于特定的 DataFrame 列,并保留其余列

问题描述 投票:0回答:1

假设我们有以下 pandas DataFrame:

df = pd.DataFrame({
    'Name': ['foo', 'bar', 'baz'],
    'Value': [1, 2, 3],
    'Duration': ['1s', '2s', '3s'],
})

现在,假设我要变换

Name
Value
列,但不变换
Duration
列。是否有像
pd.DataFrame.apply
pd.DataFrame.transform
这样的 DataFrame 方法可以将函数专门应用于这些列,同时保留其余列?比如:

df = df.some_method({
  'Name': lambda name: name.upper(),
  'Value': lambda value: value + 1
})

目前,我只知道以下方法:

df[['Name', 'Value']] = df.apply({
  'Name': lambda name: name.upper(),
  'Value': lambda value: value + 1
}, axis='columns')

如果我需要一次更新 10 多列,并列出

apply()
调用和作业中的每一列,这是不符合人体工程学的。

python-3.x pandas dataframe data-science
1个回答
0
投票

您可以使用

assign
,它将覆盖现有列并创建新列:

df = df.assign(
    Name=df['Name'].str.upper(),
    Value=df['Value']+1
)

样本数据的输出:

  Name  Value Duration
0  FOO      2       1s
1  BAR      3       2s
2  BAZ      4       3s
© www.soinside.com 2019 - 2024. All rights reserved.