首页 > 解决方案 > 在 Pandas 中显示列名并添加行号

问题描述

我有一个有这个的数据框

 Id  | Tv title | action | Drama | Family | Sad | Other
---    -------   --------  -----  -------   ----  ------  
 1     TV Show1 |   0    |  1    |    1   |  0  |   0
 2     TV show2 |   0    |  0    |    0   |  0  |   0
 3     Tv Show3 |   0    |  1    |    1   |  0  |   0

我正在尝试显示电视标题和类型大于 1 的总和。

我有这个,它将所有值加起来(项目是我的 df)

item.sum(axis=1)

我怎样才能做到这一点?

预期是这样的:

Tv Title  | # Genres |
--------    ---------
TV Show1  |   2
TV Show3  |   2

标签: pythonpandasdataframenumpy

解决方案


我认为这Id是您的索引,并且与最终答案无关。我想你快到了。设置Tv title为索引:

n_genres = item.set_index('Tv title')

做你所做的:

n_genres = n_genres.sum(axis=1)

并过滤具有非零类型的条目

n_genres = n_genres.sum(axis=1)
n_genres[n_genres > 0] 

注意n_genrespandas.Series现在。

或者,您可以对所需的列进行求和。设置代码

item = pd.DataFrame.from_records(
    data=[[1, 'TV Show 1', 0, 1, 1, 0, 0],
          [2, 'TV Show 2', 0, 0, 0, 0, 0],
          [3, 'TV Show 3', 0, 1, 0, 1, 0]],
    columns=['Id', 'Tv title', 'action', 'Drama', 'Family', 'Sad', 'Other']
)
item = item.set_index('Id')

仅选择要包含在总和中的列

item['# Genres'] = item[['action', 'Drama', 'Family', 'Sad', 'Other']].sum(axis=1)

这提供了一个新列'# Genres',可用于选择至少有一种流派的行:

item[['Tv title', '# Genres']].loc[item['# Genres'] > 0]

下次请提供设置代码。让想要回答但不太确定的人生活更轻松(比如我 :)


推荐阅读