首页 > 解决方案 > 如何使用星体包将日落和日出数据的结果转换为数据框?

问题描述

我正在尝试找到一种方法,将使用astral某个城市的包从某个时间间隔计算黎明和黄昏时间得到的结果转换为数据框。问题是,一旦我得到日出和日落信息的结果,我很难将其转换为数据框以进行进一步分析。我的代码现在如下所示

from astral import *

def get_astral_summary():
  x=print((
    f'Dawn:    {s["dawn"]}\n'
    f'Sunrise: {s["sunrise"]}\n'
    f'Noon:    {s["noon"]}\n'
    f'Sunset:  {s["sunset"]}\n'
    f'Dusk:    {s["dusk"]}\n'
  ))
  return x 

city = LocationInfo("Surrey", "Canada", 'US/Pacific',49.104599,-122.823509)
x =pd.date_range(start="2020-12-09",end="2020-12-11")

for y in x:
  s = sun(city.observer, date=y)
  get_astral_summary()

现在,我可以看到我的结果的方式是制作打印结果的函数,输出如下所示:

Dawn:    2020-12-09 15:16:48.899052+00:00
Sunrise: 2020-12-09 15:54:44.342273+00:00
Noon:    2020-12-09 20:03:37+00:00
Sunset:  2020-12-10 00:13:05.243283+00:00
Dusk:    2020-12-10 00:51:00.107776+00:00

Dawn:    2020-12-10 15:17:44.663065+00:00
Sunrise: 2020-12-10 15:55:43.641196+00:00
Noon:    2020-12-10 20:04:04+00:00
Sunset:  2020-12-11 00:13:01.662368+00:00
Dusk:    2020-12-11 00:51:00.111312+00:00

Dawn:    2020-12-11 15:18:38.380512+00:00
Sunrise: 2020-12-11 15:56:40.604162+00:00
Noon:    2020-12-11 20:04:32+00:00
Sunset:  2020-12-12 00:13:01.168222+00:00
Dusk:    2020-12-12 00:51:02.912291+00:00

问题出现了:如何将其放入时间格式正确的数据框中?我注意到当我刚刚调用 variables时,数据类型有点像字典,如下所示:

{'dawn': datetime.datetime(2020, 12, 11, 15, 18, 38, 380512, tzinfo=<UTC>),
 'dusk': datetime.datetime(2020, 12, 12, 0, 51, 2, 912291, tzinfo=<UTC>),
 'noon': datetime.datetime(2020, 12, 11, 20, 4, 32, tzinfo=<UTC>),
 'sunrise': datetime.datetime(2020, 12, 11, 15, 56, 40, 604162, tzinfo=<UTC>),
 'sunset': datetime.datetime(2020, 12, 12, 0, 13, 1, 168222, tzinfo=<UTC>)}

我注意到当我这样做

df = pd.DataFrame([s], columns=s.keys())

数据框没有给我整个时间间隔,它只给了我如下所示

                              dawn  ...                             dusk
0 2020-12-15 15:21:51.681536+00:00  ... 2020-12-16 00:51:41.956146+00:00

[1 rows x 5 columns]

谁能给我一些解决这个问题的建议?谢谢!

标签: pythonpandasdataframedatedatetime

解决方案


您可以使用列表推导x

pd.DataFrame([sun(city.observer, date=z) for z in x])

输出:

                  dawn              sunrise                 noon  \
0 2020-12-09 15:16:... 2020-12-09 15:54:... 2020-12-09 20:03:...   
1 2020-12-10 15:17:... 2020-12-10 15:55:... 2020-12-10 20:04:...   
2 2020-12-11 15:18:... 2020-12-11 15:56:... 2020-12-11 20:04:...   

                sunset                 dusk  
0 2020-12-10 00:13:... 2020-12-10 00:51:...  
1 2020-12-11 00:13:... 2020-12-11 00:51:...  
2 2020-12-12 00:13:... 2020-12-12 00:51:...  

推荐阅读