python - 值错误转换数组中元素的数据类型

标签 python pandas numpy

我试图将两个不同数组中的所有匹配元素放入一个单一数组中。但是,我遇到了一个我不完全确定的类型错误。

这是我最初尝试做的:

IRS_zips = AGI.zipcode.unique() # np array of type int
medi_zips = df.nppes_provider_zip.unique() # np array of type object 

为了找到我做的匹配元素:

like_zips = np.intersect1d(IRS_zips,medi_zips)

这会引发此错误:

TypeError: '<' not supported between instances of 'str' and 'int'

这是有道理的,所以我检查了两个数组的类型并尝试转换它们,在这种情况下 medi_zips 不是正确的类型所以我尝试转换那个:

medi_fixed = medi_zips.astype(int)

抛出错误:

ValueError: invalid literal for int() with base 10: 'M4K 2'

我觉得这很好奇,所以我在数据框中查找一个等于 'M4K 2' 的值,我确实找到了它,它最终成为数据框的第一个元素等等重要的是显示为数字或在本例中为邮政编码。这让我认为它可能是一个编码问题?我不是很擅长。

编辑:

根据要求,IRS_zips 的输出如下所示:

array([    0, 35004, 35005, ..., 83127, 83128, 83414])

这是 medi_zips 的输出数组:

array(['21502', '60201', '43623', ..., '81656', '56137', '85246'],
      dtype=object)

理想的输出只是一个带有匹配 zip 的新数组,但它是我上面列出的错误

编辑 2:

这现在有效:

IRS_zips = AGI.zipcode.unique()
IRS_zips = (pd.to_numeric(IRS_zips, errors='coerce')).astype(int)

medi_zips = df.nppes_provider_zip.unique()
medi_int = pd.to_numeric(medi_zips, errors='coerce')
medi_int = (medi_int[~np.isnan(medi_int)]).astype(int)

最佳答案

这对我有用

import numpy as np
import pandas as pd

IRS_zips = np.array([0, 1, 2, 3, 4])
medi_zips = np.array(['0', '1', '2', '3', '4c'])

medi_int = pd.to_numeric(medi_zips, errors='coerce')

medi_int = medi_int[~np.isnan(medi_int)]

like_zips = np.intersect1d(IRS_zips, medi_int)

关于python - 值错误转换数组中元素的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55751268/

相关文章:

python - Pandas 的 `read_sql` 在从具有带小数点的数字列的 Oracle 表中读取时创建整数列

javascript - 在 Javascript 中解析 Django DateTimeField

python - 如何将非重叠数据帧矢量化为重叠移位数据帧?

python - pandas.read_csv() 可以在同一列中应用不同的日期格式!这是一个已知的错误吗?如何解决?

python - Dask Dataframe - 每行中的多行

python - 递归定义一个 N 维 numpy 数组

Python - 在某些点绘制速度和加速度矢量

python - 对不同时间序列重新采样

python-3.x - optimize.fmin_tnc 没有在 scipy.optimize 中给出正确的答案?

python - 使用 pandas 正则表达式验证数据帧 header