2014-08-30 97 views
1

我在熊猫数据框中有两列划分拆除数据帧的两列

塔1 ED和包含字符串(例如, '一', '一个', 'B,' C”, 'C', 'A')

ed column = ['a','a','b','c','c','a'] 

列2是作业,并且还包含字符串(例如, 'AA', 'BB', 'AA', 'AA', 'B-B', 'C-C')

job column = ['aa','bb','aa','aa','bb','cc'] #these are example values from column 2 of my pandas data frame 

我然后生成一个两列的频率表是这样的:

my_counts= pdata.groupby(['ed','job']).size().unstack().fillna(0) 

Now然后如何将一列中的频率除以该频率表中另一列的频率?我想采取该比例,并将其用于argsort(),以便我可以按计算的比率进行排序,但我不知道如何引用生成的表的每列。

+0

这是很难说这是怎么回事就没有一些数据:请尝试[包括一个小的,可复制粘贴的数据的例子](http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples) – Marius 2014-08-30 01:47:04

回答

0

我初始化数据如下:

ed_col = ['a','a','b','c','c','a'] 
job_col = ['aa','bb','aa','aa','bb','cc'] 
pdata = pd.DataFrame({'ed':ed_col, 'job':job_col}) 
my_counts= pdata.groupby(['ed','job']).size().unstack().fillna(0) 

现在my_counts看起来是这样的:

job aa bb cc 
ed    
a  1 1 1 
b  1 0 0 
c  1 1 0 

要访问的列,您可以使用my_counts.aamy_counts['aa']。 要访问某一行,可以使用my_counts.loc['a']

所以AA由BB划分的频率my_counts['aa']/my_counts['bb']

而现在,如果你想要得到它排序,你可以这样做:

my_counts.iloc[(my_counts['aa']/my_counts['bb']).argsort()] 
+0

谢谢你,这是一个超越的答案!对于有类似问题的任何其他人来说,其根本原因是两列中的文本值具有导入的需要通过.strip()函数删除的空白。 – Chris 2014-08-31 23:40:46