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

如何从Pandas DataFrame字典格式列提取Unix时间戳数值?

从Pandas DataFrame字典格式列提取Unix时间戳

直接用apply逐层提取

针对你提到的{'$date': {'$numberLong': 'xxxxxxxxxxxxxx'}}格式,直接通过apply遍历列中的每个字典,逐层取值并转为整数:

# 替换成你的目标列名
df['unix_timestamp'] = df['date_col'].apply(lambda x: int(x['$date']['$numberLong']))

如果存在空值或格式不规范的行,加个异常处理避免报错:

def get_timestamp(d):
    try:
        return int(d['$date']['$numberLong'])
    except (KeyError, TypeError):
        return None  # 这里可以换成你需要的默认值

df['unix_timestamp'] = df['date_col'].apply(get_timestamp)

批量展开嵌套字典(适合多列场景)

如果有多个类似的嵌套字典列,用pd.json_normalize一次性展开更高效:

import pandas as pd

# 展开目标列的嵌套结构
expanded_df = pd.json_normalize(df['date_col'])
# 提取时间戳并转成整数,合并回原DataFrame
df['unix_timestamp'] = expanded_df['$date.$numberLong'].astype(int)

读取JSON时提前处理

要是你的DataFrame是从JSON文件生成的,还可以在读取阶段就处理嵌套数据,省得后续麻烦:

import json
import pandas as pd

with open('你的数据文件.json', 'r') as f:
    raw_data = json.load(f)

# 预处理每条数据里的时间戳
for entry in raw_data:
    if '$date' in entry and '$numberLong' in entry['$date']:
        entry['unix_timestamp'] = int(entry['$date']['$numberLong'])
        # 可选:删除原来的嵌套字典列
        del entry['$date']

df = pd.DataFrame(raw_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:36:20