首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将宽数据集转换为包含多列的长格式

将宽数据集转换为包含多列的长格式
EN

Stack Overflow用户
提问于 2020-08-18 22:21:04
回答 1查看 35关注 0票数 0

我有一个数据集,如下所示:

代码语言:javascript
复制
Name   County    Industry   Jobs.2019  Jobs.2018  Establish.2019  Establish.2018  EPW.2019  EPW.2018
rows_0 Adams, OH Auto        1         2          3               4               5         6
row_1  Allen, OH Mfg         2         3          5               7               9         10
...
row_100 Adams,OH IT          5         32         1               87              8         9

最后,我想转换成一种很长的格式,比如:

代码语言:javascript
复制
Name   County    Industry  Jobs Establish EPW Year
rows_0 Adams, OH Auto        1    3         5   2019
rows_1 Adams, OH Auto        2    4         6   2018
rows_2 Allen, OH Mfg         1    5         9   2019

我可以用melt将其转换为长格式:

代码语言:javascript
复制
data_df_unpivot = data_df.melt(id_vars=['County', 'Industry'], var_name=['metric'], value_name='value')

但这实际上只为我提供了格式:

代码语言:javascript
复制
County    Industry metric    value
Adams, OH  Auto    Jobs.2019 1
Adams, OH  Auto    Jobs.2018 2
Adams, OH  Auto    EPW.2019  5
Adams, OH  Auto    EPW.2018  6

我知道我需要对Jobs.2019等进行拆分,但不确定在此之后该如何将其转换为适当的格式。

所有数据都来自API,并且是嵌套的JSON,我必须对其进行扁平化。最终目标是加载到SQL中,所以我想知道我是用Python做ETL还是让Snowflake处理,无论哪种方式,我都面临着拉长表格的相同问题。

随着数据的出来,这也将是一个活生生的表格,即Jobs.2020,Jobs.2021

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-18 23:01:19

答案就在你的标题中:使用pd.wide_to_long

代码语言:javascript
复制
print (pd.wide_to_long(df, stubnames=["Jobs","Establish","EPW"],
                       i=["Name","County","Industry"],
                       j="Year", sep=".", suffix="\d+")
       .reset_index())

      Name     County Industry  Year  Jobs  Establish  EPW
0    row_0  Adams, OH     Auto  2019     1          3    5
1    row_0  Adams, OH     Auto  2018     2          4    6
2    row_1  Allen, OH      Mfg  2019     2          5    9
3    row_1  Allen, OH      Mfg  2018     3          7   10
4  row_100  Adams, OH       IT  2019     5          1    8
5  row_100  Adams, OH       IT  2018    32         87    9
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63470659

复制
相关文章

相似问题

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