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

如何在Python的Pandas DataFrame中插入行?补全MySQL读取数据的缺失行

如何在Pandas DataFrame中补全缺失的Timestamp行并填充NULL值

当然可以实现你的需求!这里有两种简单易懂的方法,帮你补全缺失的1515581722这条记录,让data1和data2自动填充为NULL(对应Pandas里的NaN):

方法一:利用时间重采样(适合时间序列场景)

因为你的timestamp是秒级Unix时间戳,我们可以先把它转换成Pandas的时间类型,再用重采样功能自动补全缺失的秒数:

import pandas as pd

# 假设data是你从MySQL读取的原始DataFrame
# 第一步:将timestamp列转为Pandas datetime类型(单位为秒)
data['timestamp'] = pd.to_datetime(data['timestamp'], unit='s')

# 第二步:把timestamp设为索引,按秒重采样,缺失值保留NaN(即SQL的NULL)
data = data.set_index('timestamp')
data_resampled = data.resample('S').asfreq()

# 第三步:重置索引将timestamp变回普通列,再转回Unix时间戳格式(如果需要)
data_resampled = data_resampled.reset_index()
data_resampled['timestamp'] = data_resampled['timestamp'].astype('int64') // 10**9

处理后,缺失的1515581722行就会被自动插入,对应的data1和data2值为NaN,和你期望的NULL效果一致。

方法二:生成完整时间序列后合并(更直接的数值操作)

如果不想处理时间类型,我们可以直接基于现有timestamp的范围生成完整的秒序列,再和原数据做左连接:

import pandas as pd

# 第一步:获取原始数据中timestamp的最小和最大值
min_ts = data['timestamp'].min()
max_ts = data['timestamp'].max()

# 第二步:生成从min到max的所有秒数的完整序列
full_timestamp = pd.DataFrame({'timestamp': range(min_ts, max_ts + 1)})

# 第三步:左连接原数据,自动补全缺失行,缺失值填充为NaN
data_complete = pd.merge(full_timestamp, data, on='timestamp', how='left')

可选:将NaN替换为字符串'NULL'

如果需要把Pandas的NaN显示成字符串形式的NULL,可以添加这一步:

data_complete = data_complete.fillna('NULL')

不过日常数据分析中更推荐保留NaN,因为它是Pandas原生的缺失值标识,方便后续统计和处理。

两种方法都能完美实现你的需求,你可以根据场景选择:如果是时间序列分析,方法一更合适;如果只是简单补全行,方法二更直接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:45:59