我在我的 Jupyter 上工作过。我想知道是否有办法在表中的每一行中找到最大值的位置(列索引)。 例如,它看起来像这样:yo1 = [1,3,7]yo2 = [2,4,5,6,8]yo3 = [0.1,0.3,0.7]yo4 = [0.2,0.4,0.5,0.6,0.8]yoo = []for x in yo3: vvv = [] for y in yo4: dot = x*y na = x+x nb = y+y prod = dot/(na+nb) vvv.append(prod) yoo.append(vvv)yooo = pd.DataFrame(yoo, columns=(yo2), index=[yo1])print(yooo)(是的,这是余弦相似度)output: 2 4 5 6 81 0.033333 0.040000 0.041667 0.042857 0.0444443 0.060000 0.085714 0.093750 0.100000 0.1090917 0.077778 0.127273 0.145833 0.161538 0.186667然后,我想在每一行中获取具有最大值的列的索引。我用这个:go = yooo.idxmax().reset_index()go.columns=['column', 'get']gooutput: column get0 2 (7,)1 4 (7,)2 5 (7,)3 6 (7,)4 8 (7,)但我想要的输出是:output: column get0 2 71 4 72 5 73 6 74 8 7我试过用 ' ' 替换 '('go['get']=go['get'].str.replace('(','')并使用了 lstrip-rstripgo['get']=go['get'].map(lambda x: x.lstrip('(').rstrip(',)'))还有这个top_n=1get = pd.DataFrame({n: yooo[col].nlargest(top_n).index.tolist() for n, col in enumerate(yooo)}).T他们都没有很好地工作:(帮帮我..如何解决这个问题,你能给我解释一下吗???谢谢!
1 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
你真正的问题是在你的'yooo'的数据框构造函数中,你用[]包装一个列表,创建一个二维列表,从而创建一个pd.MultiIndex,因此是元组(7,)。改用这个:
yooo = pd.DataFrame(yoo, columns=(yo2), index=yo1)
yooo.idxmax()
输出:
2 7
4 7
5 7
6 7
8 7
dtype: int64
并进一步获取具有列名的数据框:
yooo.idxmax().rename_axis('column').rename('get').reset_index()
输出:
column get
0 2 7
1 4 7
2 5 7
3 6 7
4 8 7
添加回答
举报
0/150
提交
取消