对未堆叠数据框的两列进行除法操作
我有一个包含两列的pandas数据框。
第一列叫做ed,里面是一些字符串(比如说:'a'、'a'、'b'、'c'、'c'、'a')。
ed column = ['a','a','b','c','c','a']
第二列叫做job,里面也有字符串(比如说:'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
我初始化数据的方式如下:
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.aa
或者 my_counts['aa']
。
要访问某一行,你可以使用 my_counts.loc['a']
。
所以 aa 和 bb 的频率比就是 my_counts['aa'] / my_counts['bb']
。
如果你想把结果排序,可以这样做:
my_counts.iloc[(my_counts['aa'] / my_counts['bb']).argsort()]