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

Python中如何将数组行拼接为指定格式的日期时间DataFrame

解决方案

核心思路

不用merge或concat(这俩是用来合并数据结构的,不适合你的场景),核心是从数组中提取指定位置的时间日期元素,然后格式化补零,最后生成DataFrame。

单一行数组处理代码

import numpy as np
import pandas as pd

# 示例数组,x用占位符np.nan代替(实际替换成你的真实值)
arr = np.array([np.nan, np.nan, 0, 0, 3, np.nan, np.nan, 10, 8, 2022])

# 提取时、分、秒、日、月、年(替换成你数组中对应值的实际索引)
hour, minute, second = arr[2], arr[3], arr[4]
day, month, year = arr[7], arr[8], arr[9]

# 格式化:补零到两位,生成目标字符串
time_str = f"{int(hour):02d}:{int(minute):02d}:{int(second):02d}"
date_str = f"{int(year)}/{int(month):02d}/{int(day):02d}"

# 生成DataFrame
df = pd.DataFrame({"Date": [date_str], "Time": [time_str]})
print(df)

输出结果:

Date      Time
0  2022/08/10  00:00:03

多行数组批量处理代码

如果你的数组是多行的二维数组,用批量方式处理更高效:

import numpy as np
import pandas as pd

# 示例二维数组
arr_2d = np.array([
    [np.nan, np.nan, 0, 0, 3, np.nan, np.nan, 10, 8, 2022],
    [np.nan, np.nan, 12, 30, 45, np.nan, np.nan, 5, 12, 2023]
])

# 批量提取所有行的对应字段并转成整数
hours = arr_2d[:, 2].astype(int)
minutes = arr_2d[:, 3].astype(int)
seconds = arr_2d[:, 4].astype(int)
days = arr_2d[:, 7].astype(int)
months = arr_2d[:, 8].astype(int)
years = arr_2d[:, 9].astype(int)

# 批量格式化字符串
time_strs = [f"{h:02d}:{m:02d}:{s:02d}" for h, m, s in zip(hours, minutes, seconds)]
date_strs = [f"{y}/{m:02d}/{d:02d}" for y, m, d in zip(years, months, days)]

# 生成DataFrame
df = pd.DataFrame({"Date": date_strs, "Time": time_strs})
print(df)

输出结果:

Date      Time
0  2022/08/10  00:00:03
1  2023/12/05  12:30:45

关键注意点

  1. 替换代码中的索引:确保arr[2]、arr[3]等位置和你实际数组中时、分、秒等值的位置一致;
  2. 补零操作:用{:02d}格式化整数,确保单个数字的月份、日期、时分秒自动补零(比如8变成08,0保持00);
  3. 类型转换:数组元素可能是浮点数,需要用int()转成整数再格式化,避免出现.0的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:40:54