gpt4 book ai didi

pandas - 比 itertuples 内的 loc 更快地更新列的 block

转载 作者:行者123 更新时间:2023-12-03 16:46:29 26 4
gpt4 key购买 nike

我有以下代码,它遍历数据帧并根据其他两个列更新列的块。当前解决方案使用 locitertuples .
是否可以在不诉诸手动并行化或拆分数据帧的情况下使代码更快?

n_rows = 10000
ix_ = pd.date_range(start="2020-01-01 00:00", freq="min", periods=n_rows)
offsets_ = pd.to_timedelta(np.random.randint(0, 60, size=n_rows), unit="min")
df = pd.DataFrame(
ix_ + pd.to_timedelta(offsets_, unit="min"), index=ix_, columns=["t_end"]
)
df["active"] = 0
for row in df.itertuples():
df.loc[row.Index : row.t_end, "active"] += 1

最佳答案

如果在 NumPy 数组而不是在 Pandas 系列上进行计算,速度会快 3-4 倍:

df['int_index'] = range(len(df))
active = np.zeros(len(df), dtype=int)

for row in df.itertuples():
active[df.int_index.loc[row.Index : row.t_end]] += 1

df['active'] = active

关于pandas - 比 itertuples 内的 loc 更快地更新列的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67122668/

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