从文本文件中导入列表,以便与ISIN()进行比较

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (50)

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

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

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()

我想要返回一个有功能的bool。如果我在代码中创建了一个非常简单的列表,这是可行的。

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

print(df.dtypes)

>>Zip Code int64

即使当我调整文本文件为‘12345’,‘12346’。

df['Zip Code'] =  df['Zip Code'].astype(str)

有人有什么想法吗?

提问于
用户回答回答于

你得按“,”分开。还请注意readlines返回list,每一行一个元素。它显示您的输入文件只包含一行,因此需要提取列表的第一个元素。

最后,需要确保将字符串与字符串或整数与整数进行比较。在下面的示例中,我假设0S是很重要的,并且贯穿于字符串的比较中。

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]

所属标签

可能回答问题的人

  • 人生的旅途

    10 粉丝484 提问6 回答
  • 无聊至极

    4 粉丝504 提问6 回答
  • 骑牛看晨曦

    5 粉丝522 提问5 回答
  • Richel

    8 粉丝0 提问4 回答

扫码关注云+社区

领取腾讯云代金券