假设我们有以下 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()
调用和作业中的每一列,这是不符合人体工程学的。
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