Python 我的熊猫羔羊地图出了什么问题?

Python 我的熊猫羔羊地图出了什么问题?,python,numpy,pandas,lambda,Python,Numpy,Pandas,Lambda,我试图找到第二个数据帧中的观测值所属的数据帧的百分位数,我认为lambda函数会像这样做: df1.var1.map(lambda x: np.percentile(df2.var1, x)) 对于系列df1.var1中的每个x,应用函数np.percentile(df2.var1,x),该函数在系列df2.var1中查找x的百分位。由于某种原因,我得到了错误 kth(=-9223372036854775599) out of bounds (209) 其中209是df2的长度,但我不知道k

我试图找到第二个数据帧中的观测值所属的数据帧的百分位数,我认为lambda函数会像这样做:

df1.var1.map(lambda x: np.percentile(df2.var1, x))
对于系列
df1.var1
中的每个
x
,应用函数
np.percentile(df2.var1,x)
,该函数在系列
df2.var1
中查找
x
的百分位。由于某种原因,我得到了错误

kth(=-9223372036854775599) out of bounds (209)
其中209是
df2
的长度,但我不知道
kth
部分指的是什么。知道我做错了什么吗

完全错误:

ValueError                                Traceback (most recent call last)
<ipython-input-82-02d5cacfecd4> in <module>()
----> 1 df1.var1.map(lambda x: np.percentile(df2.var1, x))
   C:\Users\ngudat\AppData\Local\Continuum\Anaconda\lib\site-packages\pandas\core\series.pyc in map(self, arg, na_action)
   2043                                      index=self.index).__finalize__ (self)
   2044         else:
-> 2045             mapped = map_f(values, arg)
   2046             return self._constructor(mapped,
   2047                                      index=self.index).__finalize__(self)

pandas\src\inference.pyx in pandas.lib.map_infer (pandas\lib.c:62187)()

<ipython-input-82-02d5cacfecd4> in <lambda>(x)
----> 1 df.qof.map(lambda x: np.percentile(prac_prof.qof, x))

C:\Users\ngudat\AppData\Local\Continuum\Anaconda\lib\site-packages\numpy\lib\function_base.pyc in percentile(a, q, axis, out, overwrite_input, interpolation, keepdims)
   3266     r, k = _ureduce(a, func=_percentile, q=q, axis=axis, out=out,
   3267                     overwrite_input=overwrite_input,
-> 3268                     interpolation=interpolation)
   3269     if keepdims:
   3270         if q.ndim == 0:

C:\Users\ngudat\AppData\Local\Continuum\Anaconda\lib\site-packages\numpy\lib\function_base.pyc in _ureduce(a, func, **kwargs)
   2995         keepdim = [1] * a.ndim
   2996 
-> 2997     r = func(a, **kwargs)
   2998     return r, keepdim
   2999 

C:\Users\ngudat\AppData\Local\Continuum\Anaconda\lib\site-packages\numpy\lib\function_base.pyc in _percentile(a, q, axis, out, overwrite_input, interpolation, keepdims)
   3370         weights_above.shape = weights_shape
   3371 
-> 3372         ap.partition(concatenate((indices_below, indices_above)),axis=axis)
   3373 
   3374         # ensure axis with qth is first

ValueError: kth(=-9223372036854775599) out of bounds (209)
ValueError回溯(最近一次调用)
在()
---->1 df1.var1.map(λx:np.百分位数(df2.var1,x))
地图中的C:\Users\ngudat\AppData\Local\Continuum\Anaconda\lib\site packages\pandas\core\series.pyc(self、arg、na_动作)
2043索引=self.index.\uuuu最终确定\uuuuu(self)
2044其他:
->2045 mapped=map_f(值,arg)
2046返回自构造函数(已映射,
2047索引=self.index.\uuuu最终确定\uuuuu(self)
pandas.lib.map_infere(pandas\lib.c:62187)()中的pandas\src\inference.pyx
in(x)
---->1 df.qof.图(λx:np.百分位数(prac_教授qof,x))
C:\Users\ngudat\AppData\Local\Continuum\Anaconda\lib\site packages\numpy\lib\function\u base.pyc百分位数(a、q、axis、out、overwrite\u输入、插值、keepdims)
3266 r,k=减少(a,func=百分位,q=q,axis=axis,out=out,
3267覆盖输入=覆盖输入,
->3268插值=插值)
3269如果保持更新:
3270如果q.ndim==0:
C:\Users\ngudat\AppData\Local\Continuum\Anaconda\lib\site packages\numpy\lib\function\u base.pyc in _ureduce(a,func,**kwargs)
2995 keepdim=[1]*a.ndim
2996
->2997 r=func(a,**kwargs)
2998返回r,keepdim
2999
C:\Users\ngudat\AppData\Local\Continuum\Anaconda\lib\site packages\numpy\lib\function\u base.pyc in\u百分位(a、q、axis、out、overwrite\u输入、插值、keepdims)
3370重量高于形状=重量高于形状
3371
->3372 ap.分区(连接((下面的索引,上面的索引)),轴=轴)
3373
3374#确保具有qth的轴位于第一位
ValueError:kth(-9223372036854775599)超出范围(209)

百分位数在这里不会提供您所需的信息,它需要一个百分位数并提供值。你需要的恰恰相反。您应该对该列中的条目进行排序,并根据以下内容计算百分位数:

import pandas as pd
aa = [1,3,2,4,11,8,9]
dd = pd.DataFrame(data=aa,columns=['xx'])
dd['rank']=dd['xx'].rank()
dd['percentile'] = dd['rank']/len(dd)
这将为您提供与每个条目对应的百分比:

   xx  rank  percentile
0   1     1    0.142857
1   3     3    0.428571
2   2     2    0.285714
3   4     4    0.571429
4  11     7    1.000000
5   8     5    0.714286
6   9     6    0.857143

您能发布完整错误吗?在上面添加了完整错误。看起来您的错误发生在调用
np.percentile()
时。确保传递的参数正确无误: