【问题标题】:Apply function to list of columns from a dataframe将函数应用于数据框中的列列表
【发布时间】:2020-04-24 06:59:06
【问题描述】:

我正在创建一个接受 3 个输入的函数:一个数据框、一个列和一个列列表。 该函数应将简短计算应用于单个列,并将不同的简短计算应用于其他列的列表。它应该返回一个数据框,其中仅包含原始数据框中修改后的列(及其修改后的行)。

import numpy as np

df = pd.DataFrame([[1, 2, 3, 4], [1, 3, 5, 6], [4, 6, 7, 8], [5, 4, 3, 6], columns=['A', 'B', 'C', 'D'])

def pre_process(dataframe, y_col_name, x_col_names):
    return = new_dataframe

要应用于 y_col_name 的行的计算是 y_col_name 的每个值除以 y_col_name 的平均值。

要应用于 x_col_name 中每个列列表的计算是每列的每个值除以该列的标准差。

我需要一些帮助来编写函数。我想我需要使用“应用”或“lambda”函数,但我不确定。

这是调用命令的样子:

pre_process_data = preprocess(df,'A', ['B','D'])

谢谢

【问题讨论】:

  • 一些数据会有所帮助。请花点时间阅读有关如何发布熊猫问题的信息:stackoverflow.com/questions/20109391/…
  • 所以..你的问题是什么?你是在问这里的人写你的函数吗?如果没有,请发布您的错误以及您到目前为止所尝试的内容。
  • 是的 - 我正在寻求帮助来编写该函数。抱歉帖子不好,我会尽快回去编辑。
  • 清理了请求。提前感谢帮助。谢谢

标签: pandas list dataframe multiple-columns


【解决方案1】:
def pre_process(dataframe, y_col_name, x_col_names):
    new_dataframe = dataframe.copy()
    new_dataframe[y_col_name] =  new_dataframe[y_col_name]/new_dataframe[y_col_name].mean()
    new_dataframe[x_col_names] = new_dataframe[x_col_names]/new_dataframe[x_col_names].std()
    return new_dataframe

这是你的意思吗?

【讨论】:

  • 快到了。现在我只是想只返回 y_col_name 和 x_col_names 中的列。我正在使用return new_dataframe[y_col_name, [x_col_names]] 但不工作。类型错误:不可散列的类型:“列表”。谢谢
  • 我通过cols_to_return = [y_column_name] + [x for x in x_column_names] return new_dataframe.filter(items= cols_to_return) 实现了这一点,感谢您的帮助。
猜你喜欢
  • 2021-03-20
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-23
  • 2019-06-01
相关资源
最近更新 更多