gpt4 book ai didi

python - 有没有办法在 Python 数据表中对整个帧执行算术运算?

转载 作者:太空宇宙 更新时间:2023-11-04 01:57:21 24 4
gpt4 key购买 nike

这个问题是关于最近的h2o datatable包。我想用这个库替换 pandas 代码以提高性能。

问题很简单:我需要用一个数字除/加/乘/减整个框架或各种选定的列。

在 pandas 中,要将除第一列之外的所有列除以 3,可以这样写:

import pandas as pd
import numpy as np

df = pd.DataFrame({
"C0": np.random.randn(10000),
"C1": np.random.randn(10000)
})
df.iloc[:,1:] = df.iloc[:,1:]/3

在数据表包中,可以只对一个选定的列执行此操作:

import datatable as dt
from datatable import f

df = dt.Frame(np.random.randn(1000000))
df[:, "C1"] = dt.Frame(np.random.randn(1000000))
for i in range(1,df.shape[1]): df[:,i] = df[:,f[i]/3]

到目前为止,在 Python 3.6(我不知道 3.7 版本)中,FrameProxy f 不接受切片。我只是问是否有比循环更好的方法来执行这种帧算术运算,我在 Documentation 上没有找到它。 .

编辑:

最新提交 #1962添加了与此问题相关的功能。如果我能够运行最新的源版本,我会为自己添加一个包含该新功能的答案。

最佳答案

你是对的,f-symbol 目前不支持切片表达式(顺便说一句,这是一个有趣的想法,也许将来可以添加?)

但是,赋值的右侧可以是表达式列表,允许您编写以下内容:

df = dt.Frame(C0=np.random.randn(1000000),
C1=np.random.randn(1000000))

df[:, 1:] = [f[i]/3 for i in range(1, df.ncols)]

关于python - 有没有办法在 Python 数据表中对整个帧执行算术运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56514174/

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