scipy 以系列为自变量的 Dataframe 应用函数

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

我想使用来自同一个/其他 Dataframe 的序列将函数 scipy.stats.percentileofscore() 应用于 Dataframe 的行。

import pandas as pd
from scipy import stats
import numpy as np

data = np.random.normal(50, 25, size=(3, 10)).astype(int)

df = pd.DataFrame(data=data)
df['SCORE'] = [20,40,60]

| 索引|第0页|一个|2个|三个|四个|五个|六个|七个|八个|九个|得分|
| - -|- -|- -|- -|- -|- -|- -|- -|- -|- -|- -|- -|
| 第0页|二十四人|三十九|-3个|三十二个|-26岁|六十一岁|八十八个|三十六人|三十二个|五十九个|20个|
| 一个|二十六人|六十三|十七岁|五十五人|七十九|三个|一百零八|七十三人|七十三人|九十二|四十个|
| 2个|三十八|六十七|八十二人|五十三个|四十个|六十一岁|三十九|三十二个|五十九个|七十八人|六十个|
将stats.percentileofscore()与静态“score = 50”一起应用非常简单

df['PCT OF SCORE'] = df.iloc[:,0:10].apply(stats.percentileofscore, score = 50, axis=1)

| 索引|第0页|一个|2个|三个|四个|五个|六个|七个|八个|九个|得分|分数百分比|
| - -|- -|- -|- -|- -|- -|- -|- -|- -|- -|- -|- -|- -|
| 第0页|二十四人|三十九|-3个|三十二个|-26岁|六十一岁|八十八个|三十六人|三十二个|五十九个|20个|70.0分|
| 一个|二十六人|六十三|十七岁|五十五人|七十九|三个|一百零八|七十三人|七十三人|九十二|四十个|30.0个|
| 2个|三十八|六十七|八十二人|五十三个|四十个|六十一岁|三十九|三十二个|五十九个|七十八人|六十个|40.0分|
但是,我想使用df ['SCORE']系列来设置“score”参数

df['PCT OF SCORE'] = df.iloc[:,0:20].apply(stats.percentileofscore, score = df['SCORE'], axis=1)

但这会引发ValueError
最后,我想保持相同的代码结构,只是修复“score”参数的语法。
谢谢你!

crcmnpdw

crcmnpdw1#

stats.percentileofscorescore应该是类似数组的,您可以将Series转换为list

df['PCT OF SCORE'] = df.iloc[:,0:20].apply(stats.percentileofscore, score = df['SCORE'].tolist(), axis=1)

此外,score之类的数组也是1.9.0的新特性

  • #13572:ENH:n-D和nan_policy支持scipy.统计信息.分数百分位数

您需要使用pip3 install scipy --upgrade或其他软件包管理工具将脚本升级到最新版本。

相关问题