为了账号安全,请及时绑定邮箱和手机立即绑定

从列中提取多个值到熊猫中的新列

从列中提取多个值到熊猫中的新列

浮云间 2021-09-02 16:08:17
我有一个数据框df有一个列名Category里面的值是CategoryFurnitureTechnologyOffice Supply这三个值重复,列中总共有 1000 个值。我想创建一个新的列名称Category_filter,其值来自Category列中的Furniture和Technology。df['Category_Filter'] = df[df['Category'].isin(['Furniture', 'Technology'])]我已经尝试使用上面的代码来创建新列但没有工作。Category_FilterFurnitureTechnology这是所需的输出
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

我假设您的意思是您想要一个数据框,其中“类别”中的值是“家具”或“技术”。这是你可以做的事情。

df[df['Category'].isin(['Furniture ', 'Technology '])]

如果这不是你的意思,也许你可以澄清一下。

编辑:在下面回复您的评论:

 df['Category_filter'] = df['Category'].where(df['Category'].isin(['Furniture ', 'Technology ']))



查看完整回答
反对 回复 2021-09-02
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

如果我正确理解了您,那么您正在查找列中每个元素重复的值的总数。


示例数据帧:


>>> df

        Category

0      Furniture

1     Technology

2  Office Supply

3      Furniture

4     Technology

5  Office Supply

6      Furniture

7     Technology

8  Office Supply

根据您更新的代码它应该工作,只有您不匹配的值才会报告为NaN..


>>> df['Category_Filter'] = df[df['Category'].isin(['Furniture', 'Technology'])]

>>> df

        Category Category_Filter

0      Furniture       Furniture

1     Technology      Technology

2  Office Supply             NaN

3      Furniture       Furniture

4     Technology      Technology

5  Office Supply             NaN

6      Furniture       Furniture

7     Technology      Technology

8  Office Supply             NaN

或者,如果您希望删除所有具有NaN值的行,只需尝试:


>>> df.dropna()

# df.dropna(inplace=True)   # make in permanent to the DataFrame

     Category Category_Filter

0   Furniture       Furniture

1  Technology      Technology

3   Furniture       Furniture

4  Technology      Technology

6   Furniture       Furniture

7  Technology      Technology


查看完整回答
反对 回复 2021-09-02
  • 2 回答
  • 0 关注
  • 200 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信