如何从包含特定列中任何字符串的Pandas数据框中删除行

2024-06-06 19:36:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下格式的CSV数据:

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

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

^{pr2}$

现在,我可以用以下方式硬编码解决方案:

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?

但是,我要找的是一个通用的解决方案,它适用于上面列出的任何类型的表。在


Tags: ofcsv数据citydf格式location解决方案
3条回答

或者你也可以

df[df['Location'].str.isnumeric()]
^{pr2}$

您可以使用pd.to_numeric将非数值强制到nan,然后根据位置是否为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
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

相关问题 更多 >