首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与熊猫融为一体

与熊猫融为一体
EN

Stack Overflow用户
提问于 2022-12-04 13:15:22
回答 1查看 16关注 0票数 0

我正在尝试重新排列一个DataFrame。目前,我有1035行和24列,一天中每小时一列。我想让这个数组有1035*24行。如果您想查看数据,可以从以下JSON文件中提取数据:

代码语言:javascript
复制
url = "https://www.svk.se/services/controlroom/v2/situation?date={}&biddingArea=SE1"

svk = []
for i in parsing_range_svk:
    data_json_svk = json.loads(urlopen(url.format(i)).read())
    svk.append([v["y"] for v in data_json_svk["Data"][0]["data"]])

这是我用来重新排列数据的代码,但它并没有完成这项工作。第一次观察是在正确的地方,然后它开始变得凌乱。我还没有弄清楚每一个观察结果的去向。

代码语言:javascript
复制
svk = pd.DataFrame(svk)
date_start1 = datetime(2020, 1, 1)
date_range1 = [date_start1 + timedelta(days=x) for x in range(1035)]
date_svk = pd.DataFrame(date_range1, columns=['date'])
svk['date'] = date_svk['date']
svk.drop(24, axis=1, inplace=True)

consumption_svk_1 = (svk.melt('date', value_name='SE1_C')
         .assign(date = lambda x: x['date'] + 
                                pd.to_timedelta(x.pop('variable').astype(float), unit='h'))
         .sort_values('date', ignore_index=True))
EN

回答 1

Stack Overflow用户

发布于 2022-12-04 13:26:57

若要以所需的方式重新排列DataFrame,可以使用pandas.DataFrame.stack方法将DataFrame从宽格式重塑为长格式。然后,可以删除变量列并将日期列重命名为所需的名称。

代码语言:javascript
复制
consumption_svk_1 = (svk.stack()
                     .reset_index()
                     .rename(columns={'level_1': 'hour', 'date': 'timestamp'})
                     .sort_values('timestamp', ignore_index=True))

这将为您提供一个具有1035*24行和三列的DataFrame:timestamphourvalue。请注意,timestamp列的格式不正确,因此需要使用pandas.to_datetime方法将其转换为datetime格式。下面是一个示例:

代码语言:javascript
复制
consumption_svk_1['timestamp'] = pd.to_datetime(consumption_svk_1['timestamp'])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74675971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档