Pandas DataFrame处理含字符串与NaN的列,生成数值比较判断列
Pandas 数据处理解决方案
步骤说明
- 将
colA从字符串类型转为整数类型,为后续数值比较做准备 - 清洗
colB:识别并转换其中的有效整数,把字符串形式的NaN和普通文本标记为缺失值 - 根据清洗后的
colB与colA的比较结果生成colC
完整代码实现
import pandas as pd import numpy as np # 初始化原始数据 d = {'colA': ['1', '2', '3', '3', '3'], 'colB': ['NaN', '4', '2', 'this', 'that']} mydata = pd.DataFrame(data=d) # 1. 转换colA为整数类型 mydata['colA'] = mydata['colA'].astype(int) # 2. 清洗colB,提取有效整数 def parse_colb(value): if value == 'NaN': return pd.NA try: return int(value) except ValueError: # 无法转换为整数的文本返回缺失值 return pd.NA mydata['colB_clean'] = mydata['colB'].apply(parse_colb) # 3. 生成colC的判断结果 mydata['colC'] = np.where( mydata['colB_clean'].isna(), 'NaN', np.where(mydata['colB_clean'] > mydata['colA'], 'Yes', 'No') ) # 移除中间辅助列,得到最终结果 mydata = mydata.drop('colB_clean', axis=1) print(mydata)
运行结果
colA colB colC 0 1 NaN NaN 1 2 4 Yes 2 3 2 No 3 3 this NaN 4 3 that NaN
内容的提问来源于stack exchange,提问作者person
相关产品推荐
相关产品推荐

