首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Pandas根据条件添加列值

Python Pandas根据条件添加列值
EN

Stack Overflow用户
提问于 2017-02-06 14:46:29
回答 1查看 1.6K关注 0票数 3

我有一个具有下列值的DataFrame (df):

代码语言:javascript
复制
                  Title
fintech_countries          
US                 60
UK                 54
India              28
Australia          25
Germany            13
Singapore          11
Canada             10

我想添加所有值小于25的国家/地区,并将它们与其总和(34)一起显示为“其他”。

我已经通过以下代码创建了国家/地区的列名:

代码语言:javascript
复制
df1 = df.rename_axis('fintech_countries').rename_axis("countries", axis="columns" , inplace=True)


countries         Title
fintech_countries          
US                 60
UK                 54
India              28
Australia          25
Germany            13
Singapore          11
Canada             10

现在,我已经基于StackOverflow上的另一个查询尝试了以下代码:

代码语言:javascript
复制
df1.loc[df1['Title'] < 25, "countries"].sum()

但是我得到了以下错误:

代码语言:javascript
复制
KeyError: 'the label [countries] is not in the [columns]'

有人能帮帮忙吗?我需要如下的最终输出:

代码语言:javascript
复制
countries         Title
fintech_countries          
US                 60
UK                 54
India              28
Australia          25
Others             34

提亚

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-06 15:00:48

使用loc实现setting with enlargement和按boolean indexing过滤的解决方案

代码语言:javascript
复制
mask = df['Title'] < 25
print (mask)
fintech_countries
US           False
UK           False
India        False
Australia    False
Germany       True
Singapore     True
Canada        True
Name: Title, dtype: bool

df1 = df[~mask].copy()
df1.loc['Others', 'Title'] = df.loc[mask, 'Title'].sum()
df1.Title = df1.Title.astype(int)
print (df1)
countries          Title
fintech_countries       
US                    60
UK                    54
India                 28
Australia             25
Others                34
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42061840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档