我能够帮忙翻译。以下是您需要翻译的内容:
目标是使用单个命令在“df”中调用“add_subtract”函数,对“a”和“b”进行加减操作,创建两列新列:“sum”和“difference”。我认为以下代码可能有效:
但是它会产生以下错误:
----> 9 lambda row: add_subtract(row['a'], row['b']), axis=1) ValueError:太多的值需要展开(期望2个)
编辑:除了下面的答案之外,pandas应用函数可以修改返回一个列表或Series, 可以参考此链接:pandas apply function that returns multiple values to rows in pandas dataframe
我想把一个具有多个返回值的函数应用于 pandas DataFrame
,并将结果放在该 DataFrame
的不同新列中。
因此,假设有这样的数据:
import pandas as pd
df = pd.DataFrame(data = {'a': [1, 2, 3], 'b': [4, 5, 6]})
def add_subtract(a, b):
return (a + b, a - b)
目标是使用单个命令在“df”中调用“add_subtract”函数,对“a”和“b”进行加减操作,创建两列新列:“sum”和“difference”。我认为以下代码可能有效:
(df['sum'], df['difference']) = df.apply(
lambda row: add_subtract(row['a'], row['b']), axis=1)
但是它会产生以下错误:
----> 9 lambda row: add_subtract(row['a'], row['b']), axis=1) ValueError:太多的值需要展开(期望2个)
编辑:除了下面的答案之外,pandas应用函数可以修改返回一个列表或Series, 可以参考此链接:pandas apply function that returns multiple values to rows in pandas dataframe
def add_subtract_list(a, b):
return [a + b, a - b]
df[['sum', 'difference']] = df.apply(
lambda row: add_subtract_list(row['a'], row['b']), axis=1)
或者
def add_subtract_series(a, b):
return pd.Series((a + b, a - b))
df[['sum', 'difference']] = df.apply(
lambda row: add_subtract_series(row['a'], row['b']), axis=1)
两者都可以使用(后者等同于Wen的已接受答案)。
pd.Series
吗? - Max Ghenisrow['a']
和row['b']
是否能够正常工作。通常这种引用在apply()
内部是不起作用的。 - Federico Doratorow['a']
或者row.a
。 - undefined