【问题标题】:Extracting multiple values from a column to a new column in pandas从一列中提取多个值到熊猫中的新列
【发布时间】:2019-05-02 20:26:53
【问题描述】:

我有一个数据框 df 有一个列名 Category 并且里面的值是
类别
家具
技术
办公用品

这三个值在列中重复,总共有 1000 个值。我想创建一个新的列名称 Category_filter,在 Category 列中具有 FurnitureTechnology 值。

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

我已尝试使用上述代码创建新列,但无法正常工作。

Category_Filter
Furniture
Technology

这是想要的输出

【问题讨论】:

  • 你想要的输出是什么?它应该可以工作。

标签: python python-3.x pandas dataframe


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 我想在现有数据框中创建一个新列,该列只有该类别列中的家具和技术值
  • 请看我的编辑。另外,由于您在编辑的问题中使用了我的代码,如果您觉得我的回答有帮助,请接受/投票。
【解决方案2】:

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

示例数据框:

>>> 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

【讨论】:

    猜你喜欢
    • 2022-10-15
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 2016-10-22
    • 2015-09-03
    • 1970-01-01
    相关资源
    最近更新 更多