gpt4 book ai didi

Python:在大数据框中按值选择行

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

给定一个数据框 df:

 Column A: [0, 1, 3, 4, 6]

Column B: [0, 0, 0, 0, 0]

目标是有条件地替换 B 列中的值。如果 A 列的值存在于集合 assginedToA 中,我们将 B 列中的相应值替换为常量 b .

例如:如果 b=1 且 assignedToA={1,4},则结果为成为

Column A: [0, 1, 3, 4, 6]

Column B: [0, 1, 0, 1, 0]

我查找 A 值并将 B 值写入其中的代码如下所示:

df.loc[df['A'].isin(assignedToA),'B']=b

此代码有效,但对于巨大的数据帧来说确实很慢。你有什么建议,如何加快这个过程?


数据框 df 有大约 500 万行,assignedToA 最多有 7 个值。

最佳答案

您可能会发现通过下拉到 numpy 可以提高性能:

df = pd.DataFrame({'A': [0, 1, 3, 4, 6],
'B': [0, 0, 0, 0, 0]})

def jp(df, vals, k):
B = df['B'].values
B[np.in1d(df['A'], list(vals))] = k
df['B'] = B
return df

def original(df, vals, k):
df.loc[df['A'].isin(vals),'B'] = k
return df

df = pd.concat([df]*100000)

%timeit jp(df, {1, 4}, 1) # 8.55ms
%timeit original(df, {1, 4}, 1) # 16.6ms

关于Python:在大数据框中按值选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50699713/

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