【问题标题】:Taking csv file columns as arguments将 csv 文件列作为参数
【发布时间】:2020-07-09 20:48:47
【问题描述】:

我在 csv 文件中有 3 列我想用作计算最小值、最大值、平均值的 python 函数的参数。 我只想定义 3 个函数,而不是每个函数一个。

我拿什么作为论据?

我尝试了很多不同的方法,下面的图片是我最聪明的(我是新手)解决方案

【问题讨论】:

标签: python excel pandas csv input


【解决方案1】:

对于您的函数,您需要为函数调用的每个参数传递一个单独的变量。如果要在数据框中创建一个新列,其中包含“X”、“Y”、“Z”三列的最大值,则可以使用 apply 和 lambda 遍历每一行,发送三列中的每个条目到函数,并将函数的输出放在新列中。使用您的示例,它看起来像:

df['Max'] = df.apply(lambda x: max_value(x['X'],x['Y'], x['Z']), axis=1)

这将在数据框中创建一个标题为“Max”的新列,每行的“X”、“Y”和“Z”列的最大值将在那里输出。 Apply 将函数 max_value 应用于数据帧中的每一行,并将三个参数从 X、Y 和 Z 列发送到函数。

你的函数需要看起来像:

def max_value(X, Y, Z):
    max_val = max(X, Y, Z)
    return max_val

这些函数接受三个参数:X、Y、Z,它们由 apply 函数传递,该函数从每一行的相关列中获取每个参数。

如果我不明白这个问题,请告诉我。

编辑:

根据从 csv 加载数据集的方式,您可能需要在调用函数之前重置索引:

df = df.reset_index()

【讨论】:

  • 感谢您的回答,您理解正确。你知道为什么它说 ('X', 'occured at index 0')
  • 添加了一个编辑,问题是你的表格 df 是如何排列的。还要确保在 apply 函数中包含 axis=1 。如果重置不起作用,您可以打印 df 并发布到您的问题,这可能有助于回答问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
  • 2020-01-04
  • 1970-01-01
  • 2021-10-04
相关资源
最近更新 更多