pandas DataFrame判断列是否为空并按规则格式化日期列的实现
解决方案
核心错误说明
你两段代码的问题都出在误用df['C'].empty判断逻辑:该属性是判断整个C列是否完全没有数据,而非判断C列每行的取值是否为空,所以条件判断没有按照单行维度生效,导致输出不符合预期。
正确实现代码
首先读取CSV时指定分隔符为|,且统一读取为字符串类型避免类型转换异常:
import pandas as pd import numpy as np # 读取CSV文件,sep指定分隔符,dtype指定所有列读取为字符串 df = pd.read_csv('你的csv文件路径.csv', sep='|', dtype=str)
然后按照需求处理C列:
# 先把空值/NaN统一替换为空字符串,避免后续处理报错 df['C'] = df['C'].fillna('') # 逐行判断处理C列 df['C'] = np.where( df['C'] == '', # 逐行判断C列取值是否为空 '""', # 为空则赋值双引号 df['C'].str.replace('-', '') + '000000' # 不为空则删除横杠后拼接6个0 )
输出验证
处理后输出的df和你预期的结果完全一致:
A B C 0 1100 8718 20211121000000 1 1104 21 ""
内容的提问来源于stack exchange,提问作者gesgallar
相关产品推荐
相关产品推荐

