【问题标题】:How to use apply function here?如何在这里使用应用功能?
【发布时间】:2021-07-16 08:14:59
【问题描述】:
import numpy as np
import pandas as pd
PATH = r'C:\Users\ADMIN\Desktop\Net_Present_value.csv'
data1 = pd.read_csv(PATH)
def calc_equity(assets,liabilities):
return liabilities - assets
data1.apply(calc_equity)
它给了我错误说明:
calc_equity() missing 1 required positional argument: 'liabilities
请帮忙看看我该如何解决这个问题
【问题讨论】:
标签:
python
apply
user-defined-functions
【解决方案1】:
我假设您的数据有两列['assets', 'liabilities'],并且您想将净值计算为第三列。这里不需要apply 函数。您可以将其计算为两列的差:
data1['equity'] = calc_equity(data1['assets'], data1['liabilities'])
这将在您的 DataFrame 中创建新列 'equity'。
如果您坚持将函数应用于 DataFrame,则相关函数需要接受单个参数,即 DataFrame 的列或行。在您的情况下,您想在同一行中取两个值的差值,因此要应用的函数需要将一行作为参数:
def calc_equity(row):
return row['liabilities'] - row['assets']
data['equity'] = data1.apply(calc_equity, axis=1)
axis=1 告诉apply 函数在每一行上工作。在函数中,您可以按列访问行中的值。请记住,这比第一种方法慢,因为它迭代所有行而不是将列作为 numpy 数组处理。