我试图使用^{
我的数据帧有一千多行,观察时间超过25年(即每个变量记录在25列,col_1980
,col_1981
,等等)。执行wide_to_long
转换大约需要7分钟(!)当使用我的8个变量时,还有大量的内存分配(峰值超过7GB,而原始数据帧小于30MB)。在
这是预期的还是我做错了什么?我知道这是一个相当不具体的问题,但我还是希望有人能给点提示。谢谢!在
---编辑后添加---
正如已经正确指出的那样,上述问题一般是无法回答的。我相信我现在可能已经发现了问题,所以也许有人可以帮我解决这个问题:
考虑一下wide_to_long
的docstring中的示例dataframe的一个稍微修改的版本:
df = pd.DataFrame({"age70" : {0 : "a", 1 : "b", 2 : "c"},
"age71" : {0 : "d", 1 : "e", 2 : "f"},
"agedum70" : {0 : 2.5, 1 : 1.2, 2 : .7},
"agedum71" : {0 : 3.2, 1 : 1.3, 2 : .1},
"X" : dict(zip(range(3), np.random.randn(3)))
})
df["id"] = df.index
正如您所看到的,这个dataframe的独特之处在于我们有两个以相同的字符开头的变量(这里我试图表示一个变量及其伪等价物的常见出现)。当我现在运行:pd.wide_to_long(df, ["age", "agehd"], i="id", j="year")
,wide_to_long
将产生四个j
变量[70,71,dum70,dum71]
。在我的使用案例中,有25年的时间和更多的名称冲突,这使得数据帧膨胀到原来大小的许多倍,这解释了缓慢的性能和高内存分配
我不确定我是否还有一个问题——也许除了重命名数据集中的所有列以避免变量的错误识别之外,是否还有解决这个问题的方法?在
目前没有回答
相关问题 更多 >
编程相关推荐