Python 从文本文件导入列表以与具有isin()的dataframe进行比较

Python 从文本文件导入列表以与具有isin()的dataframe进行比较,python,string,pandas,series,Python,String,Pandas,Series,我有一个地址数据框,包括邮政编码。我试图通过从包含有效邮政编码的文本文件中导入列表来查看这些邮政编码是否有效。我似乎无法从列表或数据帧中获得正确的数据类型 我的列表在文本文件中如下所示 00501, 00544, 00601, 00602, 00603, 00604, 00605, 00606, 00610, 00611, 00612, 00613, 00614, 00616, 00617, 00622, 00623, 00624, 00627, 00631, 00636, 00637, 006

我有一个地址数据框,包括邮政编码。我试图通过从包含有效邮政编码的文本文件中导入列表来查看这些邮政编码是否有效。我似乎无法从列表或数据帧中获得正确的数据类型

我的列表在文本文件中如下所示

00501, 00544, 00601, 00602, 00603, 00604, 00605, 00606, 00610, 00611, 00612, 00613, 00614, 00616, 00617, 00622, 00623, 00624, 00627, 00631, 00636, 00637, 00638, 00641, 00646, 00647, 00650, 00652, 00653, 00656, 00659, 00660, 00662, 00664, 00667, 00669, 00670, 00674, 00676, 00677, 00678, 00680, 00681, 00682, 00683, 00685, 00687, 00688, 00690, 00692, 00693, 00694, 00698, 00703, 00704, 00705, 00707, 00714, 00715, 00716, 00717, 00718, 00719, 00720, 00721, 00723, 00725, 00726..... 
我正在像这样导入列表

text_file = open("/C:/valid_zipcodes.txt", "r")
zip_codes = text_file.readlines()
我希望返回一个带有is in函数的bool。如果我在代码中创建了一个非常简单的列表,这就可以实现

zip_codes2 = [12401,12603]
df['valid_zip'] = df['Zip Code'].isin(zip_codes)
>>valid_zip True

print(df.dtypes)

>>Zip Code int64
我尝试使用以下命令将数据类型转换为object,它更改为object,但在文本文件的列表中找不到它的对应项。即使我将文本文件调整为“12345”、“12346”

df['Zip Code'] =  df['Zip Code'].astype(str)
有人有什么想法吗

您需要按“,”拆分。还要注意,
readlines
返回一个
列表,每行一个元素。您的输入文件似乎只包含一行,因此您需要提取列表的第一个元素

最后,您需要确保将字符串与字符串或整数与整数进行比较。在下面的示例中,我假设前导的
0
s很重要,并对整个字符串进行比较

from io import StringIO

text_file = StringIO('00501, 00544, 00601, 00602, 00603, 00604')

## create set of zip codes
zip_codes = set(text_file.readlines()[0].split(', '))

## input series of strings
s = pd.Series(['00501', '00544', '00601', '00605'])
s_res = s.isin(zip_codes).tolist()

# [True, True, True, False]

## input series of integers
t = pd.Series([501, 544, 601, 605])
t_res = t.astype(str).str.zfill(5).isin(zip_codes).tolist()

# [True, True, True, False]

如何将邮政编码(如
00723
)存储为整数。我怀疑您的问题在于缺少了开头的
0
s