使用pandas转换为长面板数据格式

2024-05-16 03:08:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,其中行表示时间,列表示个人。我想在pandas中高效地将其转换为长面板数据格式,因为数据量相当大。我想避免循环。以下是一个示例:以下数据帧:

      id    1    2
date              
20150520  3.0  4.0
20150521  5.0  6.0

应转化为:

^{pr2}$

由于数据的大小,速度对我来说非常重要。如果有折衷的话,我更喜欢它而不是优雅。虽然我怀疑我可能遗漏了一个相当简单的功能,但是熊猫应该能够处理这个问题。有什么建议吗?在


Tags: 数据功能id面板示例pandasdate时间
3条回答

您要查找的函数是

df.reset_index()

然后可以使用重命名列

^{pr2}$

我想你需要^{}和{a2}:

print (df)
            1    2
date              
20150520  3.0  4.0
20150521  5.0  6.0

df = df.stack().reset_index()
df.columns = ['date','id','value']
print (df)
       date id  value
0  20150520  1    3.0
1  20150520  2    4.0
2  20150521  1    5.0
3  20150521  2    6.0

^{pr2}$

使用melt

pd.melt(df.reset_index(),
        id_vars='date',
        value_vars=['1', '2'],
        var_name='Id')

enter image description here


编辑:
因为OP想要快;-)

^{pr2}$

相关问题 更多 >