Pandas 从数据库中的dataframe列中删除特定对象类型的值

Pandas 从数据库中的dataframe列中删除特定对象类型的值,pandas,dataframe,data-cleaning,drop,Pandas,Dataframe,Data Cleaning,Drop,我有一个数据帧,其中一些值是整数,其他值是数组。我只是想删除“ORIGIN\u AIRPORT\u ID”列中包含数组(我相信是对象数据类型)的所有行,但在尝试了许多方法之后,我还没有弄清楚如何执行此操作 下面是我的数据帧的前20行的样子。显示为列表的值就是我要删除的值。数据集有几百万行,所以我只需要编写代码,删除特定dataframe列中所有类似数组的值(如果有意义的话) df = df[df.origin_airport_ID.str.contains(',') == False] <

我有一个数据帧,其中一些值是整数,其他值是数组。我只是想删除“ORIGIN\u AIRPORT\u ID”列中包含数组(我相信是对象数据类型)的所有行,但在尝试了许多方法之后,我还没有弄清楚如何执行此操作

下面是我的数据帧的前20行的样子。显示为列表的值就是我要删除的值。数据集有几百万行,所以我只需要编写代码,删除特定dataframe列中所有类似数组的值(如果有意义的话)

df = df[df.origin_airport_ID.str.contains(',') == False]

< P>你应该考虑下次给我们一个文本数据样本,而不是一个数字。我们更容易测试你的例子。

原始数据:

    ITIN_ID             ORIGIN_AIRPORT_ID
0  20194146                         10397
1  20194147                         10397
2  20194148                         10397
3  20194149  [10397, 10398, 10399, 10400]
4  20194150                         10397
在您的情况下,您可以使用
.to_numeric
功能:

df['ORIGIN_AIRPORT_ID'] = pd.to_numeric(df['ORIGIN_AIRPORT_ID'], errors='coerce')
它将无法转换为数字的每个单元格替换为NaN(不是数字),因此我们得到:

    ITIN_ID  ORIGIN_AIRPORT_ID
0  20194146            10397.0
1  20194147            10397.0
2  20194148            10397.0
3  20194149                NaN
4  20194150            10397.0
现在要删除这些行,只需使用
.dropna

df = df.dropna().astype('int')
这将产生所需的数据帧

    ITIN_ID  ORIGIN_AIRPORT_ID
0  20194146              10397
1  20194147              10397
2  20194148              10397
4  20194150              10397

非常感谢你!这正是我一直在寻找的,而且效果非常好。我一定会给文本的数据样本,第一次海报,所以我感谢耐心!