问题描述
我有一个pandas数据框,其中一些值是整数,而其他值是数组。我只想将包含数组(我相信的对象数据类型)的所有行都放在“ ORIGIN_AIRPORT_ID”列中,但是在尝试了许多方法之后,我仍无法弄清楚该怎么做。
这是我数据框的前20行。像列表一样显示的值是我要删除的值。该数据集有几百万行,所以我只需要编写代码就可以删除该特定数据框列中所有类似于数组的值。
解决方法
df = df[df.origin_airport_ID.str.contains(',') == False]
,
您应该考虑下次给我们一个文本形式的数据示例,而不是一个图形。对我们来说,测试您的示例更加容易。
原始数据:
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 ( Not a Number ),因此我们得到:
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')
这会产生所需的DataFrame
ITIN_ID ORIGIN_AIRPORT_ID
0 20194146 10397
1 20194147 10397
2 20194148 10397
4 20194150 10397