【发布时间】:2021-09-01 18:57:09
【问题描述】:
我是 python 新手,我在循环/将结果附加回原始数据帧时遇到问题。基本上,我有一个 csv 我正在读入具有鱼检测时间的 python。我希望能够将鱼检测分类为白天或黑夜。我正在使用带有 if 语句的 Astral 包,以显示根据一年中特定位置和时间的日出/日落是在“白天”还是“夜晚”检测到鱼。
-
我不确定我的循环是否过于复杂,但在与 NOAA 核对后,看起来白天/夜间时间是正确的。如何将 if 语句中的这些数据添加回只有 DetectTime 的原始数据框中?
-
如果我想使用 Astral 中的黄昏和黎明为其他列添加另一个 for 循环,我如何将其添加到数据帧中以使最终的 df 为 DetectTime、DayNight 和 DawnDusk?蒂亚!
import astral
from astral import sun
import pandas as pd
df = pd.read_csv("fishdata.csv", sep = '\t')
obs = astral.Observer(latitude = 30.128, longitude = -115.455, elevation = 0.0)
df['DetectTime'] = pd.to_datetime((df['DetectTime']))
df.DetectTime= df.DetectTime.dt.tz_localize('UTC').dt.tz_convert('Etc/GMT+8')
df = pd.DataFrame(df)
for data in df.DetectTime:
date = pd.to_datetime(data.strftime("%m/%d/%Y %H:%M"))
daylight = pd.to_datetime((sun.daylight(obs, date, tzinfo = 'Etc/GMT+8')))
if pd.to_datetime(daylight[0].strftime("%m/%d/%Y %H:%M")) <= date < pd.to_datetime(daylight[1].strftime("%m/%d/%Y %H:%M")):
print(date, 'Day')
else: print(date, 'Night')
【问题讨论】:
标签: python pandas dataframe for-loop append