划分未堆叠数据帧的两列

时间:2014-08-30 01:12:50

标签: python pandas

我在pandas数据框中有两列

第1列是ed并包含字符串(例如'a','a','b,'c','c','a')

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

第2列是作业并且还包含字符串(例如'aa','bb','aa','aa','bb','cc')

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)

现在,我如何将一列中的频率除以该频率表的另一列中的频率?我想采用该比率并将其用于argsort(),以便我可以按计算的比率排序,但我不知道如何引用结果表的每一列。

1 个答案:

答案 0 :(得分: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()]