【发布时间】:2017-08-04 14:17:39
【问题描述】:
嘿,我浏览了一些帖子,但找不到直接答案。我正在研究具有两列 ZipCode 和 ZipCodePlusFour 的 pandas DataFrame。填充了一些 ZipCodePlusFour 单元格。所有 ZipCode 单元格都已填满。问题是邮政编码有 9 位数字。所以我试图摆脱 9 位邮政编码的最后 4 位数字并将它们放在 ZipCodePLusFour 中。
df['ZipCode'] = df.ZipCode.astype(str) # just in case
df['ZipCodePlusFour'] = df.ZipCode.apply(lambda x: x[-4:] if len(x) > 5 else None)
df['ZipCode'] = df.ZipCode.apply(lambda x: x[:-4] if len(x) > 5 else
我的问题在第二行。 if 语句做了它应该做的事情,但 else 什么也不做。我尝试放置 None 但它用 None 填充单元格,而不是留下已经在单元格中的值。
【问题讨论】:
-
else x保持原样 -
我认为要解决这个问题,您应该删除
else部分? -
逻辑是如果字符串有6个或更多字符,将其修剪到最后4个,如果它有5个字符,则保留为5...?只是询问是否可能是一个错误的错误,因为如果规则只是应该“修剪到最多 4 个字符”,则根本不需要
if..else。 -
@JackParkinson 你能在 lambda 语句中删除 else 吗?
-
其实我不确定你能不能——我可能有点厚:/