最Pythonic的pandas DataFrame单元格按条件拼接实现方法
实现方案
推荐写法(向量化操作,性能最优)
直接使用numpy.where做条件分支处理,一行即可完成赋值,是符合Pandas最佳实践的Pythonic写法:
import numpy as np import pandas as pd # 构造示例DataFrame(实际使用时替换为自己的df即可) df = pd.DataFrame({ "city": ["paris", "paris", "dallas", "miami", "paris"], "arr": [11, 12, 22, 15, 16] }) # 核心赋值逻辑 df["final_target"] = np.where( df["city"] == "paris", df["city"] + "_" + df["arr"].astype(str), df["city"] )
无额外依赖的Pandas原生写法
如果不想引入numpy依赖,也可以用Pandas自带的Series.where方法实现,效果完全一致:
df["final_target"] = df["city"].where( df["city"] != "paris", df["city"] + "_" + df["arr"].astype(str) )
说明
两种写法都是全量向量化操作,比apply遍历行的写法性能高1~2个数量级,非常适合处理大数据量的DataFrame。逻辑上仅做一次条件判断:当city取值为paris时,将city字符串和转为字符串格式的arr值拼接,否则直接返回原值即可。
内容的提问来源于stack exchange,提问作者Alex Dana
相关产品推荐
相关产品推荐

