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

基于Python为DataFrame添加对应日期的日出日落时间

没问题!我来帮你搞定给DataFrame添加日出日落时间的需求,完美解决你提到的那些痛点——支持Python3、能自定义任意城市、不用纠结时区包的问题。

解决方案思路

核心是先把你的日期时间列转成标准datetime格式,然后针对每个日期,用成熟的天文计算库获取当天的日出日落时间,最后把这些时间匹配回原DataFrame的每一行。

具体步骤&代码

  1. 安装合适的库
    我们用astral这个现代Python3兼容的天文库,它支持自定义任意经纬度的位置,不需要固定城市列表:
pip install astral
  1. 处理DataFrame并计算日出日落
    以下是完整代码,你只需要替换成你的目标位置的经纬度和时区就行:
import pandas as pd
from astral import LocationInfo
from astral.sun import sun

# 构造你的原始DataFrame(如果是从文件读取的话替换成pd.read_csv之类的)
data = {
    'DateTime': ['01/04/2016 10:00', '01/04/2016 10:05', '02/04/2016 10:10',
                 '02/04/2016 10:15', '03/04/2016 10:20', '03/04/2016 10:25', '03/04/2016 10:30'],
    'Pdc': [1,2,3,4,5,6,7]
}
df = pd.DataFrame(data)

# 把DateTime列转换成标准datetime类型(注意你的格式是DD/MM/YYYY HH:MM)
df['DateTime'] = pd.to_datetime(df['DateTime'], format='%d/%m/%Y %H:%M')

# 配置你的目标位置信息:这里以北京为例,替换成你需要的城市经纬度和时区
# 时区可以用IANA时区格式,比如'Asia/Shanghai'、'Europe/London'等
target_location = LocationInfo(
    name="YourCity",
    region="YourRegion",
    timezone="Asia/Shanghai",
    latitude=39.9042,  # 替换成目标纬度
    longitude=116.4074 # 替换成目标经度
)

# 定义函数:输入日期,返回当天的日出、日落时间
def fetch_sun_times(date):
    sun_data = sun(target_location.observer, date=date, tzinfo=target_location.timezone)
    # 返回时间部分(如果需要带日期的完整datetime可以去掉.time())
    return pd.Series([sun_data['sunrise'].time(), sun_data['sunset'].time()], index=['Sunrise', 'Sunset'])

# 提取日期列,按日期分组计算日出日落,再合并回原DataFrame
df['Date'] = df['DateTime'].dt.date
sun_time_df = df.groupby('Date').apply(lambda group: fetch_sun_times(group.name))
df = df.merge(sun_time_df, left_on='Date', right_index=True).drop('Date', axis=1)

# 查看结果
print(df)

为什么这个方案解决你的问题?

  • ✅ 支持Python3:astral的最新版本完全兼容Python3.7及以上,不用再找Python2的老库
  • ✅ 自定义任意城市:只要知道目标位置的经纬度和时区,就能计算,不受固定城市列表限制
  • ✅ 时区处理友好:Python3.9+自带zoneinfo,不需要额外装时区包;低版本Python安装pytz即可,astral会自动适配

如果不想用第三方库,手动计算日出日落涉及非常复杂的天文公式(比如球面三角、太阳赤纬计算等),很容易出错,所以还是推荐用成熟的astral库来保证准确性。

内容的提问来源于stack exchange,提问作者k.ko3n

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:30:15