2015-10-17 64 views
0

我有一系列使用pandas.cut分解为桶的数字。Python:如何查找系列中的项目的属性

agepreg_cuts = pd.cut(df['agepreg'],[0,20,25,30,pd.np.inf], right=False) 

然后我计算它并显示计数。

agepreg_count = (df.groupby(agepreg_cuts).count()) 
agepreg_count 

这给了我更多的信息比我想:

  sest cmintvw totalwgt_lb 
agepreg         
[0, 20) 3182  0   1910 
[20, 25) 4246  0   2962 
[25, 30) 3178  0   2336 
[30, inf) 2635  0   1830 

现在我都想这样格式化:

INAPPLICABLE 352 
0 to 20 3182 
20 to 25 4246 
25 to 30 3178 
30 to 50 2635 
Total 13593 

这使我几个问题。

  1. 如何提取bin [25,30)的开始/结束属性(例如25/30)?
  2. 如何发现系列中的属性,以便我不必问上一个问题?

仅供参考,我使用的数据来自nsfg。免费书籍thinkstats2github上有配套代码和数据。

从'code'目录中,您可以运行以下行来加载数据框。

import nsfg 
df = nsfg.ReadFemPreg() 
df 
+0

你主要是要求有关访问断点两端,或约没有得到你“比[你]希望更多的信息”? – ako

+0

断点结束 –

+0

我假设你要求的不仅仅是btw的值,如果你将一个列表传递给'pd.cut'(你的列表有这些断点'[0,20,25,30 ,pd.np.inf]')?我想我不明白这个用例。你想要的输出似乎仍然有一个以断点作为索引的字符串。也许你只是在问如何生产这个标签? – ako

回答

0

上绝对价值的工作。如果你只是在寻找一个很好格式化字符串(您的例子表明,它),你可以使用标签参数切割功能。

## create labels from breakpoints 
breaks=[0,20,25,30,pd.np.inf] 
diff=np.diff(breaks).tolist() 

## make tuples of *breaks* and length of intervals 
joint = list(zip(breaks,diff)) 

## format label 
s1 = "{left:,.0f} to {right:,.0f}" 
labels = [s1.format(left=yr[0], right=yr[0]+yr[1]-1) for yr in joint] 
labels 

['0 to 19', '20 to 24', '25 to 29', '30 to inf'] 

然后,使用breakslabels剪下。

df['agebin'] = pd.cut(df['agepreg'],breaks, labels=labels, right=False) 

,并总结出:

df.groupby('agebin')['agebin'].size() 
+0

在您的示例'标签'中产生'[]',这会导致在运行剪切方法时出现错误'Bin标签必须少于bin边缘数量'。 –

+0

真的吗?我的标签列表比中断列表短。或者你的标签清单是空的? – ako

+0

我正在使用python 3.可能会有所作为吗?我将你的代码复制并粘贴到我的编辑器中,并且据我所知,我得到一个空数组。 –

2

你可以使用iterrows使用遍历帧,然后像

In [679]: for x, i in agepreg_count.iterrows(): 
    .....:  print ' to '.join(x[1:-1].split(', ')), i['agepreg'] 
    .....: 
0 to 20 0 
20 to 25 43 
25 to 30 27 
30 to inf 30 
+0

我必须解析它作为一个字符串?没有这样做的对象/财产方式吗? –

+1

@PhillipScottGivens(不幸)我认为这些存储为字符串。 –

+0

@AndyHayden,谢谢,我发布了一个[后续问题](http://stackoverflow.com/questions/33189607/python-introspection-how-would-i-verify-that-values-in-a-series-are -strings) –

相关问题