python - lambda if 语句或不执行任何操作 pandas

标签 python pandas lambda

嘿,我浏览了一些帖子,但找不到直接答案。我正在研究 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/

相关文章:

Python 将元组列表转换为嵌套字典列表

python - 如何使用端口 80 运行 PyCharm

python - 将日期和 float 附加到 pandas 数据框

python - 如果字符串以 pandas 中的某些字符开头,则选择行

lambda - 将 C++0x lambda 函数存储在 std::map/vector 中,以便稍后在 Visual Studio 中使用

python - Flask 中的 Jinja 模板中的未定义属性引发错误

python - 我想使用日期时间模块 utcfromtimestamp 方法,但它在 Ninja-IDE 中不起作用

python - 索引按日期分组并聚合的 Pandas 数据框?

java - 在流操作中使用方法引用和函数对象之间的区别?

java - 提取结果集时是否应该使用新的流 lambda?