【问题标题】:Filtering a column in a data frame to get only column entries that contain a specific word过滤数据框中的列以仅获取包含特定单词的列条目
【发布时间】:2020-12-23 17:19:47
【问题描述】:

print(data['PROD_NAME'])

0           Natural Chip        Compny SeaSalt175g
1                         CCs Nacho Cheese    175g
2           Smiths Crinkle Cut  Chips Chicken 170g
3           Smiths Chip Thinly  S/Cream&Onion 175g
4         Kettle Tortilla ChpsHny&Jlpno Chili 150g
                            ...                   
264831     Kettle Sweet Chilli And Sour Cream 175g
264832               Tostitos Splash Of  Lime 175g
264833                    Doritos Mexicana    170g
264834     Doritos Corn Chip Mexican Jalapeno 150g
264835               Tostitos Splash Of  Lime 175g
Name: PROD_NAME, Length: 264836, dtype: object

我只想要某处包含“芯片”一词的产品名称。

new_data = pd.DataFrame(data['PROD_NAME'].str.contains("Chip"))

print(pd.DataFrame(new_data))


        PROD_NAME
0            True
1           False
2            True
3            True
4           False
...           ...
264831      False
264832      False
264833      False
264834       True
264835      False

[264836 rows x 1 columns]

我的问题是如何删除为 False 的 product_names,而不是在上面的数据框中包含 True,而是获取导致它变为 True 的产品名称。

顺便说一句,这是 Quantium 数据分析虚拟实习计划的一部分。

【问题讨论】:

    标签: python pandas filtering


    【解决方案1】:

    你快到了,

    试试这个,

    res = data[data['PROD_NAME'].str.contains("Chip")]
    

    O/P:

                                     prod_name
    0   Natural Chip        Compny SeaSalt175g
    2   Smiths Crinkle Cut  Chips Chicken 170g
    3   Smiths Chip Thinly  S/Cream&Onion 175g
    8  Doritos Corn Chip Mexican Jalapeno 150g
    

    【讨论】:

      【解决方案2】:

      尝试使用带有列名的 .loc 来选择满足您所需条件的特定列。有一些文档here,但逗号之前的部分是您要用作过滤器的布尔系列(在您的情况下是 str.contains('Chip'),逗号之后是您要返回的列/列(在您的情况下为“PROD_NAME”,但也适用于另一列/列)。

      示例

      import pandas as pd
      example = {'PROD_NAME':['Chippy','ABC','A bag of Chips','MicroChip',"Product C"],'Weight':range(5)}
      
      data = pd.DataFrame(example)
      
      data.loc[data.PROD_NAME.str.contains('Chip'),'PROD_NAME']
      
      #0            Chippy
      #2    A bag of Chips
      #3         MicroChip
      

      【讨论】:

        猜你喜欢
        • 2020-11-21
        • 2019-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-26
        • 1970-01-01
        • 2018-12-20
        相关资源
        最近更新 更多