对未堆叠数据框的两列进行除法操作

1 投票
1 回答
2304 浏览
提问于 2025-04-18 22:15

我有一个包含两列的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()]

撰写回答