如何将含datetime、字符串、空值的多类型行转为字符串且保留日期格式
解决方案
如果你的datetime类型默认转字符串的输出和你要保留的原有日期格式一致,直接使用fillna+astype即可,效率远高于apply:
processed_row = example_row.fillna('').astype(str)
这个方法会先将行内所有空值(包括None、pd.NaT、np.nan)统一替换为空字符串,再统一转为字符串类型,既不会出现'None'/'NaT'这类无效字符串,也会完全保留你之前用astype(str)得到的日期格式。
如果你需要统一指定日期输出格式(比如固定为YYYY-MM-DD、YYYY-MM-DD HH:MM:SS等),可以使用带类型判断的apply逻辑,同时适配原生datetime、pandas Timestamp类型:
# 按自己的需求修改strftime内的格式字符串 processed_row = example_row.apply(lambda x: x.strftime('%Y-%m-%d') if hasattr(x, 'strftime') else str(x) if not pd.isnull(x) else '')
说明
你之前尝试的astype(str, skipna=True)无效,是因为pandas的astype方法本身并没有skipna参数,该参数不会生效;如果要针对空值做特殊处理,提前用fillna替换空值是最简洁的方案。
内容的提问来源于stack exchange,提问作者Pythn
相关产品推荐
相关产品推荐

