pandas - Pandas reshape Dataframe based on column value
问题描述
I have a Dataframe df = pd.Dataframe({'year':[2001,2002,2001,2002,2003],'1':[36984,36559,12927,12414,9731],'2':[28384,33467,11677,11258,8407],'State':["Alabama","Alabama","Alaska","Alaska","Alaska"]})
like this:
year 1 2 State
2001 36984 28384 Alabama
2002 36559 33467 Alabama
2001 12927 11677 Alaska
2002 12414 11258 Alaska
2003 9731 8407 Alaska
. Now I want to organize this df
to one column group by State
, like this:
year-month Alabama Alaska
2001-1 36984 12927
2001-2 28384 11677
2002-1 36559 12414
2002-2 33467 11258
2003-1 NaN 9371
2003-2 NaN 8407
How to achieve this? Thanks.
解决方案
Use DataFrame.melt
with join columns and then DataFrame.pivot
:
df1 = df.melt(['year','State'])
df1['year-month'] = df1['year'].astype(str) + '-' + df1['variable'].astype(str)
df1 = df1.pivot('year-month','State','value')
print (df1)
State Alabama Alaska
year-month
2001-1 36984.0 12927.0
2001-2 28384.0 11677.0
2002-1 36559.0 12414.0
2002-2 33467.0 11258.0
2003-1 NaN 9731.0
2003-2 NaN 8407.0
推荐阅读
- java - java 8和tomcat的Java流抛出错误
- delphi - Delphi TestInsight 无法加载 DLL
- angular - 如何将前端(Angular)与本地超级账本结构 fabcar 示例 v2.2 的后端连接起来?
- node.js - 将 Excel 数据上传到 Microsoft SQL Server
- java - Java将列中的元素从String数组复制到新的int数组
- javascript - 如何找到重复的公司并将它们合并为一个并将它们的权重相加
- regex - 我怎样才能匹配这个模式?
- java - Mapstruct 1.3.0.Final 版本为可选的集合 getter 字段生成错误的代码
- python - 尝试通过 Heroku CLI 在 Windows 上登录 heroku 时,如何解决错误“请验证 package.json 是否具有有效的“主”条目”
- powerbi - 商业智能 | 在类别数据的折线图中显示