如果另一列中的条件不是m,则尝试从另一列中的列返回值

2024-10-03 04:35:55 发布

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

我正在编写的代码如下所示。我有一个邮政编码前缀列表,我将其与一列邮政编码进行比较,我将其向下解析到前三位,如果它们不匹配,则得到一个真/假列。我有第三列,其中包含州缩写“WY”、“NY”、“KY”等,如果zip check列为True,我想用“WY”替换“state”中的内容,否则,如果为false,则保留该行中已有的内容。我试过几种不同的方法,但没人想跑。。有什么建议吗?你知道吗

zips = ['820', '821', '822', '823', '824', '825', '826', '827', '828', '829', '830', '831']

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

df['ZipCheck']= df['Zip'].str[:3]

df['ZipCheck']= df['ZipCheck'].apply(lambda x: True if x in zips else False)

到目前为止,代码运行良好,我在Zip Check中得到了正确的True-False列,但我无法将其正确应用于下面的现有“State”列:

df = df.assign(df['State']=np.where(df['ZipCheck'] == True, 'WY', df['State']))

Tags: 代码falsetrue内容df列表zipstate