gpt4 book ai didi

python - Pandas 数据帧替换速度慢

转载 作者:太空狗 更新时间:2023-10-30 00:48:23 24 4
gpt4 key购买 nike

我有一个 Excel 文件 (.xlsx),其中包含大约 800 行和 128 列,网格中的数据非常密集。大约有 9500 个单元格,我正在尝试替换使用 Pandas 数据框的单元格值:

xlsx = pandas.ExcelFile(filename)
frame = xlsx.parse(xlsx.sheet_names[0])
media_frame = frame[media_headers] # just get the cols that need replacing

from_filenames = get_from_filenames() # returns ~9500 filenames to replace in DF
to_filenames = get_to_filenames()

media_frame = media_frame.replace(from_filenames, to_filenames)
frame.update(media_frame)
frame.to_excel(filename)

replace() 需要 60 秒。有什么办法可以加快速度吗?这不是庞大的数据或任务,我期待 Pandas 移动得更快。仅供引用,我尝试对 CSV 格式的相同文件进行相同的处理,但节省的时间很少(replace() 大约 50 秒)

最佳答案

策略
创建 pd.Series 表示从文件名到文件名的 map
stack 我们的 dataframe,map,然后 unstack

设置

import pandas as pd
import numpy as np
from string import letters

media_frame = pd.DataFrame(
pd.DataFrame(
np.random.choice(list(letters), 9500 * 800 * 3) \
.reshape(3, -1)).sum().values.reshape(9500, -1))

u = np.unique(media_frame.values)
from_filenames = pd.Series(u)
to_filenames = from_filenames.str[1:] + from_filenames.str[0]

m = pd.Series(to_filenames.values, from_filenames.values)

解决方案

media_frame.stack().map(m).unstack()

时间

5 x 5 数据框

enter image description here

100 x 100

enter image description here

9500 x 800

enter image description here

9500 x 800
map 使用 seriesdict
d = dict(zip(from_filenames, to_filenames))

enter image description here

关于python - Pandas 数据帧替换速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39844967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com