当前位置: 首页 > 知识库问答 >
问题:

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

朱自明
2023-03-14

我有以下格式的CSV数据:

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

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

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

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

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

这是受以下帖子的启发:

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

然而,我所寻找的是一个通用的解决方案,它将适用于上述任何类型的表。

共有3个答案

齐振
2023-03-14
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
步弘和
2023-03-14

您可以使用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
颜杰
2023-03-14

或者你可以这么做

df[df['Location'].str.isnumeric()]

  Location  Num of Reps  Sales
0    75894            3     12
2    75286            7     24
4    27659            3     17
 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 在熊猫中的DataFrame上搜索“不包含” (6个答案) 去年关闭。 我在python中有一个非常大的数据框,我想在特定列中删除所有具有特定字符串的行。 例如,我想在数据框的列C中删除所有具有字符串“ XYZ”作为子字符串的行。 可以使用.drop()方法以一种有效的方式来实现吗? 问题答案: pandas具有向量化的字符串操作,因此您可以过滤掉包含不

  • 我在python中有一个非常大的数据帧,我想把所有具有特定字符串的行放到特定列中。 例如,我想删除所有在数据帧的C列中有字符串“XYZ”作为子字符串的行。 这可以通过使用有效的方式实现。drop()方法?

  • 我有一个具有以下列名的熊猫数据框: 结果1、测试1、结果2、测试2、结果3、测试3等。。。 我想删除名称中包含单词“Test”的所有列。此类列的数量不是静态的,而是取决于以前的函数。 我该怎么做?

  • 问题内容: 例如,我正在从文本文件中提取文本String,我需要这些词来形成数组。但是,当我执行所有这些操作时,有些单词以逗号(,)或句号(。)结尾,甚至附有括号(这完全是正常现象)。 我要做的是摆脱那些角色。我一直在尝试使用Java中的预定义String方法来做到这一点,但我还是无法解决。 问题答案: 用: replaceAll采用正则表达式。这个: …寻找每个逗号和/或句号。

  • 问题内容: 我有一个带有以下列名称的pandas数据框: Result1,Test1,Result2,Test2,Result3,Test3等… 我要删除名称包含单词“ Test”的所有列。这样的列数不是静态的,而是取决于先前的功能。 我怎样才能做到这一点? 问题答案:

  • 我已经使用熊猫导入了一个csv,现在我想删除包含某些通配符的行,可能是dev或test-dashboard-这些是字段中较大字符串的一部分。 我已经尝试了各种方法来这样做我的minus_testing_dashboard变量但没有一个工作