Pandas/Groupby/Apply优化

2024-10-02 18:19:32 发布

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

我有一段代码试图合并COL。熊猫结构中有重复的cols名称,基本上我也在尝试做类似于本文的事情:

Python Pandas merge samed name columns in a dataframe

然而,我试图处理的数据帧是从大约1GB的CSV加载的,它有大约2600列&;27000多行

代码运行,但运行约2小时20分钟

在2600列中,只有约30列需要合并为4列,比如从第13列到第42列

有没有办法优化链接帖子中提到的代码?也许能找到一种方法,告诉大熊猫从13日到42日只需群居,并且只加入这一地区的田野

非常感谢


Tags: columnscsv数据代码namein名称dataframe
1条回答
网友
1楼 · 发布于 2024-10-02 18:19:32

感谢RichieV的两个建议。我最终使用了这两个技巧,并最终做到了以下几点:

第一节将数据集按cols分成两部分,我在25岁时这样做,因为带NaN值的重复cols就是在这里结束的:

    sec1 = filtered_data.iloc[:,:25]
    sec2 = filtered_data.iloc[:,25:]

然后将数据帧的第一部分分解为变量&;值列在保留标题列的同时,这比熔化整个数据帧要快:

    sec1 = sec1.melt(id_vars=header_cols)

接下来,您只需删除在任何列中具有空值的任何行的NA,主要是在值列中:

    sec1 = sec1.dropna(axis='index', how='any') #remove rows with empty fields

最后将其向后旋转并连接2个拆分数据帧:

    sec1 = sec1.pivot_table(index= header_cols,
                   columns='variable',
                   values='value',
                   aggfunc='first')
    sec1 = sec1.reset_index()
    sec1 = sec1.rename_axis(None, axis=1)
    filtered_data = p.concat([sec1, sec2], axis=1)

再次感谢RichieV提供的宝贵建议

相关问题 更多 >