2024-05-16 03:08:07 发布
网友
我有一个数据帧,其中行表示时间,列表示个人。我想在pandas中高效地将其转换为长面板数据格式,因为数据量相当大。我想避免循环。以下是一个示例:以下数据帧:
id 1 2 date 20150520 3.0 4.0 20150521 5.0 6.0
应转化为:
由于数据的大小,速度对我来说非常重要。如果有折衷的话,我更喜欢它而不是优雅。虽然我怀疑我可能遗漏了一个相当简单的功能,但是熊猫应该能够处理这个问题。有什么建议吗?在
您要查找的函数是
df.reset_index()
然后可以使用重命名列
我想你需要^{}和{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
使用melt
melt
pd.melt(df.reset_index(), id_vars='date', value_vars=['1', '2'], var_name='Id')
编辑: 因为OP想要快;-)
您要查找的函数是
然后可以使用重命名列
^{pr2}$我想你需要^{} 和{a2}:
^{pr2}$
使用
melt
编辑:
^{pr2}$因为OP想要快;-)
相关问题 更多 >
编程相关推荐