值转换数组中元素的数据类型时出错

2024-06-09 00:23:37 发布

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

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

这是我最初尝试做的:

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'的值,我确实找到了它,它最终成为数据框的第一个元素,更重要的是显示为一个数字,或者在本例中是一个zipcode。这让我觉得这可能是一个编码问题?我不是很擅长

编辑:

根据要求,这是IRS\u zips的输出:

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

这是medi-zips的输出数组:

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

理想的输出将只是一个具有匹配zips的新数组,但是上面列出的是错误

编辑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)

Tags: of元素类型错误np数组arrayint
1条回答
网友
1楼 · 发布于 2024-06-09 00:23:37

这对我有用

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)

相关问题 更多 >