python代码转换括号[number]中的数字值并返回非数字错误

python代码转换括号[number]中的数字值并返回非数字错误,python,pandas,Python,Pandas,我觉得我不能像通常那样正确地搜索它,因为我不确定这个元素(n)变成了什么[n] 我相信这是一把口授钥匙,但我不确定 我输入了以下代码: def get_quantile_count(group, q=0.5): group=group.sort_index(by='prop', ascending=False) return group.prop.cumsum().searchsorted(q) + 1 diversity= top1000.groupby(['year','se

我觉得我不能像通常那样正确地搜索它,因为我不确定这个元素(n)变成了什么[n]

我相信这是一把口授钥匙,但我不确定

我输入了以下代码:

def get_quantile_count(group, q=0.5):
    group=group.sort_index(by='prop', ascending=False)
    return group.prop.cumsum().searchsorted(q) + 1
diversity= top1000.groupby(['year','sex']).apply(get_quantile_count)
diversity=diversity.unstack('sex')
top1000.head()
返回:

       name sex  births  year      prop
year sex                                         
1880 F   0       Mary   F    7065  1880  0.077643
         1       Anna   F    2604  1880  0.028618
         2       Emma   F    2003  1880  0.022013
         3  Elizabeth   F    1939  1880  0.021309
         4     Minnie   F    1746  1880  0.019188
diversity.head()
返回

sex      F     M
year            
1880  [38]  [14]
1881  [38]  [14]
1882  [38]  [15]
1883  [39]  [15]
1884  [39]  [16]
我相信,由于在运行diversity.plot(title='stuff')时,这些值都在[括号]中,因此我得到了错误:

TypeError: Empty 'DataFrame': no numeric data to plot
这些方括号在哪里?

这与您的函数在
返回时调用的
get\u quantile\u count
有关

它总是回来。请参见文档中的示例:

对于这一事实,您可以将函数的最后一行更改为:

return group.prop.cumsum().searchsorted(q)[0] + 1
或者,如果出于某种原因不想编辑该函数,则始终可以提取每个列表的第一个元素,该元素应用于
数据帧的每个元素:

In []: df
Out[]: 
         F     M
year            
1880  [38]  [14]
1881  [38]  [14]
1882  [38]  [15]
1883  [39]  [15]
1884  [39]  [16]
In []: df.applymap(lambda x: x[0])
Out[]: 
       F   M
year        
1880  38  14
1881  38  14
1882  38  15
1883  39  15
1884  39  16

[38]是一个列表。[38].pop()是获取其包含的单个数字的一种方法,感谢回复。在代码中的什么时候它变成了一个列表?
In []: df
Out[]: 
         F     M
year            
1880  [38]  [14]
1881  [38]  [14]
1882  [38]  [15]
1883  [39]  [15]
1884  [39]  [16]
In []: df.applymap(lambda x: x[0])
Out[]: 
       F   M
year        
1880  38  14
1881  38  14
1882  38  15
1883  39  15
1884  39  16