采坑 - 字符串的 "" 与 pd.isnull()

Posted chenjieyouge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了采坑 - 字符串的 "" 与 pd.isnull()相关的知识,希望对你有一定的参考价值。

主要是记录一个采坑的过程. 当字符串 的 " " 和 pandas 中的 " " 不是一个概念 .

需求

一个小伙伴要用 pandas 来处理一个, 表格填充的的问题, 脱敏数据大致是这样的.

区域名称 门店 店组
龙华新城大区 壹城中心店 壹城中心一组
益田大区 皇岗口岸店 皇岗口岸一组
双龙大区 龙城中央旗舰店 AAA店
深西大区 德佑麒麟A组
A宏畅房地产经纪有限责任公司 A地产经纪有限责任公司门店
宏畅房地产经纪有限责任公司 B地产经纪有限责任公司门店
东部 微地产瑞凯洪湖A店
景恒房地产有限公司 D景恒房地产有限公司门店
龙华新城大区 丰润花园店 丰润花园一组

现在想取一个 门店 字段, 新增或者覆盖 都可以, 取的逻辑是: "获取 门店 字段的值, 如果是值, 则选择 店组 字段的值.

咋一看, (不考虑性能, 只管实现哈), 这不简单嘛,都不想考虑用什么 apply, 遍历 DataFrame 的每一行, 然后判断就好了.

踩过过程

通常我是先测试下, 与其说是测试, 其实就是百度下api, 根本就记不住的, 要是没有搜索引擎, 写代码立刻就废掉了.

先来波测试

import pandas as pd 
df = pd.DataFrame({
    
    "a":[1,2,3,4,5,6],
    "门店": ["甲店", "", "", "丙店", "", "丁店"],
    "店组": ["DD", "", "AA", "", "丁店", ""]
})

print(df)
a   门店      店组
0   1   甲店  DD
1   2       
2   3        AA
3   4   丙店  
4   5        丁店
5   6   丁店  

为了演示方便, 这里选择新增 "新门店"字段, 不覆盖原来的哦 (如果 "门店", 没有值, 就取 "店组" 的值)

for 行号, 行值 in df.iterrows():   
    
    df.loc[行号, "新门店"] =  行值['门店'] or 行值["店组"]
    
print(df)
    a   门店  店组  新门店
0   1   甲店  DD    甲店
1   2           
2   3         AA    AA
3   4   丙店        丙店
4   5         丁店  丁店
5   6   丁店        丁店

测试完美通过, 然后就开始整了.

翻车1次

以上是关于采坑 - 字符串的 "" 与 pd.isnull()的主要内容,如果未能解决你的问题,请参考以下文章

奇怪的错误,将字符与字符串进行比较(p == "cancel")

容器与数据结构

linux shell中的比较符号与特殊符号介绍

利用JS判断字符串是不是含有数字与特殊字符的方法小结

Java语句字符串如何拼接与拆分

Laravel Homestead 安装与采坑