嘿,我浏览了一些帖子,但找不到直接答案。我正在研究 pandas DataFrame,它有两列 ZipCode 和 ZipCodePlusFour。一些 ZipCodePlusFour 单元格已填充。所有邮政编码单元格均已填充。问题是邮政编码有 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 不执行任何操作。我尝试放置“无”,但它用“无”填充单元格,而不是保留单元格中已有的值。
最佳答案
如果您传递的值长度小于 5 位,您可以这样做:
df['ZipCode'] = df.ZipCode.apply(lambda x: x[-4:] if len(x) > 5 else x)
但是你可以做得更简单,不需要检查长度:
df['ZipCode'] = df.ZipCode.apply(lambda x: x[-4:])
关于python - lambda if 语句或不执行任何操作 pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45509134/