划分拆除数据帧的两列
问题描述:
我在熊猫数据框中有两列。划分拆除数据帧的两列
塔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()
,以便我可以按计算的比率进行排序,但我不知道如何引用生成的表的每列。
答
我初始化数据如下:
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()]
+0
谢谢你,这是一个超越的答案!对于有类似问题的任何其他人来说,其根本原因是两列中的文本值具有导入的需要通过.strip()函数删除的空白。 – Chris 2014-08-31 23:40:46
这是很难说这是怎么回事就没有一些数据:请尝试[包括一个小的,可复制粘贴的数据的例子](http://*.com/questions/20109391/how-to-make-good-reproducible-pandas-examples) – Marius 2014-08-30 01:47:04