You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame中Date列的NaN值替换为指定格式的唯一日期?

解决方法:正确替换并格式化日期

你的问题出在两个关键点上:一是直接把整个numpy数组转成字符串,导致结果带上了数组括号和datetime.date的标识;二是没有对日期对象做格式化处理。下面是具体的修正步骤:

步骤1:提取实际的日期对象

date = dit[x]["Time"].dt.date.unique()返回的是一个numpy数组,哪怕只有一个元素,你需要先取出数组里的datetime.date实体对象,也就是取数组的第一个元素date[0]。

步骤2:将日期格式化为目标字符串

用strftime()方法把日期对象转成你想要的mm/dd/yyyy格式,比如:

formatted_date = date[0].strftime("%m/%d/%Y")

步骤3:填充DataFrame中的缺失值

用fillna()方法(比replace(np.nan, ...)更简洁直观)来批量替换NaN:

peaks_df["Date"] = peaks_df["Date"].fillna(formatted_date)

完整代码示例

import pandas as pd
import numpy as np
from datetime import date

# 模拟你的日期数组
date_array = np.array([date(2017, 6, 5)], dtype=object)
# 模拟你的DataFrame
peaks_df = pd.DataFrame({
    "Position": [1.0, 22.0, 33.0, 56.0],
    "Values": [826.18, 828.11, 826.18, 826.09],
    "Date": [np.nan, np.nan, np.nan, np.nan]
})

# 正确处理流程
target_date = date_array[0]
formatted_date = target_date.strftime("%m/%d/%Y")
peaks_df["Date"] = peaks_df["Date"].fillna(formatted_date)

print(peaks_df)

输出结果

Position  Values      Date
0       1.0  826.18  06/05/2017
1      22.0  828.11  06/05/2017
2      33.0  826.18  06/05/2017
3      56.0  826.09  06/05/2017

如果你不想要日期前的补零(比如要6/5/2017),可以根据系统调整格式:

  • Windows系统:"%#m/%#d/%Y"
  • Linux/macOS系统:"%_m/%_d/%Y" 或 "%-%m/%-d/%Y"

另外,如果你希望Date列保持日期类型而非字符串,也可以直接填充日期对象,之后按需格式化显示:

peaks_df["Date"] = peaks_df["Date"].fillna(target_date)
# 仅格式化显示,不改变列的底层类型
peaks_df.style.format({"Date": lambda x: x.strftime("%m/%d/%Y")})

内容的提问来源于stack exchange,提问作者Dheeraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:24:54