如何展平具有相同 id 的多行的 pandas 数据框
Posted
技术标签:
【中文标题】如何展平具有相同 id 的多行的 pandas 数据框【英文标题】:How can I flatten a pandas data frame with several rows with the same id 【发布时间】:2019-02-25 05:28:44 【问题描述】:我怎样才能像下面这样展平熊猫数据框:
id date var1
058a219119825 2015-01-01 0.9
058a219119825 2015-02-01 0.3
058a219119825 2015-03-01 0.1
....
058a219119826 2015-01-01 0.1
058a219119826 2015-02-01 0.5
058a219119826 2015-03-01 0.4
关于数据框的一些信息:有以下数量的带有日期的唯一条目(id):
date number of unique id's
2015-01-01 16070
2015-02-01 16082
2015-03-01 16074
2015-04-01 16079
2015-05-01 16080
2015-06-01 16085
2015-07-01 16090
2015-08-01 16094
2015-09-01 16082
2015-10-01 16085
2015-11-01 16087
2015-12-01 16094
我想要类似于此命令对 json 文件所做的操作:
flattened = (flatten(entry) for entry in json_data)
问题是现在,我在数据框中有数据。我的一个想法是使用 var 和日期创建一个新列,然后删除日期列。例如:
id var1_2015-01-01 var1_2015-02-01 var1_2015-03-01
058a219119825 0.9 0.3 0.1
此外,由于某些 id 不会包含所有 12 个不同的日期(每月 1 个),我正在考虑为不存在日期中的那些缺失 var1 值添加一个“缺失值”字符串。如何使用 Pandas 做到这一点?
【问题讨论】:
新数据框中的 date 和 var1 的值应该是多少? 你将如何处理不同的 var1 值? 你在找pivot a DataFrame吗? 查看编辑@ALollz,这是我的想法 查看编辑@SuperStew,类似的东西 【参考方案1】:您可以在 Pandas 中透视表。
例如:
entry.pivot(index='id', columns='date', values='var1')
【讨论】:
超级聪明!非常感谢! :D 知道如何将“id”保留为一列吗? @RickyKim 我知道了:entry.pivot(index='id', columns='date', values='var1').reset_index('id')以上是关于如何展平具有相同 id 的多行的 pandas 数据框的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL Server 中对具有相同 ID 的多行求和
如何从具有相同 id 的多行中选择仅一行的值并用 - 分隔它们? [复制]