我想有效地计算一个非常大的数据集中几列的最大值(axis = 1),而我现在使用的代码是:df["ia_timestamp"] = df[labels].values.max(axis=1)
. 这里 df 是 Vaex 中的 DataFrame。
我认为将“值”转换为 numpy.array 的步骤非常耗时,那么有更好的方法吗?
问问题
192 次
1 回答
1
vaex 提供的max
方法是计算列的最大值,在您的情况下,您希望每行都有最大值。
为了计算这一点,您可以使用该apply
方法,这是 vaex 3.0.0 的示例:
import vaex
import pandas as pd
df = pd.DataFrame(
{
"c1": [1, 2, 3, 4],
"c2": [2, 3, 4, 1]
}
)
df_vaex = vaex.from_pandas(df)
df_vaex.apply(lambda *x: max(x), arguments=["c1", "c2"])
它为您提供了预期的输出:
Expression = lambda_function_3(c1, c2)
Length: 4 dtype: int64 (expression)
-----------------------------------
0 2
1 3
2 4
3 4
注意:我*
在 之前x
使用 使其可用于任意数量的列。如果您有固定数量的列,则可以使用以下内容:
df_vaex.apply(lambda c1, c2: max(c1, c2), arguments=["c1", "c2"])
在您的情况下,您将不得不使用:
df["ia_timestamp"] = df.apply(lambda *x: max(x), arguments=labels)
于 2021-05-25T09:46:07.983 回答