【发布时间】:2022-01-23 18:19:03
【问题描述】:
我正在尝试使用某些条件在具有大约 450k 条记录的数据框中添加大约 2000 列,但这需要很多时间。有人可以为此提供省时的解决方案。示例代码是这样的-
dict1={x:x for x in range(2000)}
Data = pd.DataFrame(np.random.randint(0,10000,size=(450000, 4)), columns=list('ABCD'))
for i in range(1,2000):
Data[f'A_{i}']= Data['A'].apply(lambda x: max(0,min(5000,x) -dict1[i]))
【问题讨论】:
-
您能否提供minimal reproducible example 示例输入和预期输出?矢量化解决方案可以很容易地外推到更大的用例。
-
max(0, min(5000))是你的真实情况吗? -
@MichaelSzczesny 如果您运行前两行,那是我的输入。我实际上是在客户网站上工作,所以不能提供确切的细节,但它在类似的线上。我希望在我提供的条件下添加 2000 列,例如 A_1、A_2...A_2000
-
@Corralien 是的,只是 5000 将通过另一个变量传递,值可能会有所不同,所以为了简单起见,我放了 5000 而不是变量
-
@AbhishekDwivedi 如果您提供 Micheal 谈到的最小可重复示例,那么是的
标签: python pandas performance apply multiple-columns