按列值筛选

2024-05-14 18:41:46 发布

您现在位置:Python中文网/ 问答频道 /正文

如何按列对值进行排序,然后只保留n个列? 这就是我正在努力解决的问题:

import pandas as pd
import numpy as np

file = ('example.csv')
df = pd.read_csv(file)

df = df[['ID', 'Hero', 'Customer']].drop_duplicates('ID', keep="first")
df.head()

Output:
ID   |    Hero     | Customer

45        Rambo      Nils
90        Superman   Sophia
33        Superman   Sophia
55        Rambo      Sophia
12        Hulk       Sophia

为了获得我想要的格式(本例中为热图),我做了以下工作:

heatmap = df.groupby(['Hero', 'Customer']).size().unstack(fill_value=0)
heatmap

Output:

            Ida      Jonas    Morgan    Sophia    Nils
Rambo        0          0          3        11       1
Superman     2          0          0        66       0
Hulk         0          0          0         7       0

我要做的是按降序对其排序,以便将具有最高值的列推到左侧,如下所示:

想要的输出:

            Sophia      Morgan    Ida    Nils    Jonas
Rambo           11          3       0       1        0
Superman        66          0       2       0        0
Hulk             7          0       0       0        0

如果我想保留n个客户,我该怎么做? 我遇到的另一个问题是,ID在数据操作中丢失,我不确定在使用count()函数之后如何处理它。 我觉得我已经做了


Tags: csvimportiddf排序ascustomerfile
1条回答
网友
1楼 · 发布于 2024-05-14 18:41:46

df


            Ida      Jonas    Morgan    Sophia    Nils
Rambo        0          0          3        11       1
Superman     2          0          0        66       0
Hulk         0          0          0         7       0

尝试:

df.reindex(df.sum().sort_values(ascending = False).index, axis=1)

结果:

          Sophia  Morgan  Ida  Nils  Jonas
Rambo         11       3    0     1      0
Superman      66       0    2     0      0
Hulk           7       0    0     0      0

相关问题 更多 >

    热门问题