猿问

获取没有(...,)pandas python的每一行中具有最大值的列的索引

我在我的 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         8

1  0.033333  0.040000  0.041667  0.042857  0.044444

3  0.060000  0.085714  0.093750  0.100000  0.109091

7  0.077778  0.127273  0.145833  0.161538  0.186667

然后,我想在每一行中获取具有最大值的列的索引。我用这个:


go = yooo.idxmax().reset_index()

go.columns=['column', 'get']

go


output:

    column  get

0   2       (7,)

1   4       (7,)

2   5       (7,)

3   6       (7,)

4   8       (7,)

但我想要的输出是:


output:

    column  get

0   2       7

1   4       7

2   5       7

3   6       7

4   8       7

我试过用 ' ' 替换 '('


go['get']=go['get'].str.replace('(','')

并使用了 lstrip-rstrip


go['get']=go['get'].map(lambda x: x.lstrip('(').rstrip(',)'))

还有这个


top_n=1

get = pd.DataFrame({n: yooo[col].nlargest(top_n).index.tolist() for n, col in enumerate(yooo)}).T

他们都没有很好地工作:(


帮帮我..如何解决这个问题,你能给我解释一下吗???谢谢!


萧十郎
浏览 139回答 1
1回答

红糖糍粑

你真正的问题是在你的'yooo'的数据框构造函数中,你用[]包装一个列表,创建一个二维列表,从而创建一个pd.MultiIndex,因此是元组(7,)。改用这个: yooo = pd.DataFrame(yoo, columns=(yo2), index=yo1) yooo.idxmax()输出:2    74    75    76    78    7dtype: int64并进一步获取具有列名的数据框:yooo.idxmax().rename_axis('column').rename('get').reset_index()输出:   column  get0       2    71       4    72       5    73       6    74       8    7
随时随地看视频慕课网APP

相关分类

Python
我要回答