numpy 如何将一个函数应用于多列分组行并生成一列输出?

pxy2qtax  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(169)

我有一个大的EXCEL文件,其中包含从API加载和排序的股票数据。以下是适用于解决此问题的虚拟数据示例:

我想创建一个函数,按他们的行业对股票进行评分。对于这个样本,如果一只股票的[‘Growth’]值低于其组的平均增长(分位数,百分位数),我想给一只股票打5分,如果高于组的平均增长**,我想给它打10分。应在列表中返回一列中所有值的分数
当前未完成代码:

import numpy as np
import pandas as pd

data = pd.DataFrame(pd.read_excel('dummydata.xlsx')

所需的输入:

data['Growth'].apply(score) # Scores stock

所需输出:
[5,10,10,5,10,5]
如果我可以为这个样本创建一个函数,那么我将能够为不同的列创建类似的函数,这些列具有稍微不同的条件和影响分数的聚合(如百分位数或分位数)。我想说,这里的主要问题是访问这些分组的值并对它们进行比较。

e3bfsja2

e3bfsja21#

我认为不可能在apply调用中将序列转换为列表。在这一点上我可能是错的,但如果将所需的输出稍微更改为

data['Growth'].apply(score).tolist()

然后,您可以使用lambda函数来执行此操作。

score = lambda x: 5 if x < growth.mean() else 10
data['Growth'].apply(score).tolist() # outputs [5, 10, 10, 5, 10, 5]

相关问题