2014-08-30 149 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