【问题标题】: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 数组处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 2021-07-03
      • 2018-04-05
      相关资源
      最近更新 更多