【问题标题】:How to Remove Rows from Pandas Data Frame that Contains any String in a Particular Column如何从包含特定列中任何字符串的 Pandas 数据框中删除行
【发布时间】:2018-02-25 16:20:33
【问题描述】:

我有以下格式的 CSV 数据:

+-------------+-------------+-------+
|  Location   | Num of Reps | Sales |
+-------------+-------------+-------+
| 75894       |           3 |    12 |
| Burkbank    |           2 |    19 |
| 75286       |           7 |    24 |
| Carson City |           4 |    13 |
| 27659       |           3 |    17 |
+-------------+-------------+-------+

Location 列属于 object 数据类型。我想做的是删除所有具有非数字位置标签的行。因此,鉴于上表,我想要的输出是:

+----------+-------------+-------+
| Location | Num of Reps | Sales |
+----------+-------------+-------+
|    75894 |           3 |    12 |
|    75286 |           7 |    24 |
|    27659 |           3 |    17 |
+----------+-------------+-------+

现在,我可以通过以下方式对解决方案进行硬编码:

list1 = ['Carson City ', 'Burbank'];
df = df[~df['Location'].isin(['list1'])]

受到以下帖子的启发:

How to drop rows from pandas data frame that contains a particular string in a particular column?

但是,我正在寻找的是一个通用解决方案,它适用于上述类型的任何表格。

【问题讨论】:

    标签: python python-3.x pandas numpy machine-learning


    【解决方案1】:

    或者你可以这样做

    df[df['Location'].str.isnumeric()]
    
    地点 销售代表人数 0 75894 3 12 2 75286 7 24 4 27659 3 17

    【讨论】:

      【解决方案2】:

      您可以使用pd.to_numeric 将非数值强制 转换为nan,然后根据Location 是否为nan 进行过滤:

      df[pd.to_numeric(df.Location, errors='coerce').notnull()]
      
      #Location  Num of Reps  Sales
      #0  75894            3     12
      #2  75286            7     24
      #4  27659            3     17
      

      【讨论】:

        【解决方案3】:
        In [139]: df[~df.Location.str.contains('\D')]
        Out[139]:
          Location  Num of Reps  Sales
        0    75894            3     12
        2    75286            7     24
        4    27659            3     17
        

        【讨论】:

          【解决方案4】:
          df[df['Location'].str.isdigit()]
          
          
            Location  Num of Reps  Sales
          0    75894            3     12
          2    75286            7     24
          4    27659            3     17
          

          【讨论】:

            猜你喜欢
            • 2018-01-21
            • 2015-04-25
            • 2019-05-25
            • 2017-11-16
            • 2019-12-02
            • 2021-11-28
            • 2016-08-07
            • 2013-10-04
            相关资源
            最近更新 更多