【发布时间】:2019-11-15 12:18:45
【问题描述】:
以下 for 循环有效,但需要很长时间。数据框 df_customers 有大约 150 万个条目,dict_customers 大约有 500 000 行。
for i in range(len(df_customers)):
df_customers.iloc[i, j] = dict_customers[df_customers.iloc[i,k]]
我的问题是:如何加快 for 循环?
Dataframe df_customers 包含客户特征,a.o.客户ID。一位客户有几行(因此每行不是唯一的)。
字典 dict_customers 包含唯一的客户 ID(键)和每位客户的访问次数(值)。
我想向 Dataframe df_customers 添加一个新列 k,其中包含从字典中检索到的访问次数。
我用 df_customers 的 for 循环解决了这个问题: 我是行 j 是访问次数的新列 k 是具有 CustomerID 的现有列
注意:CustomerID 从 100 000 开始。
我尝试了以下理解:
df_customers.j-column = [dict_customers[df_custumers.k-column[i]] for i in range(len(df_customers))]
书面理解代码不起作用。它保持所有值 0(如初始化)。 预期的输出是每个 CustomerID 从字典中访问的客户存储在新的 df_customers 列 k 中。
【问题讨论】:
-
第一个代码片段中的
k是从哪里得到的? -
j = df_customers.columns.get_loc('j-column') -
k = df_customers.columns.get_loc('k-column')
标签: python dataframe dictionary for-loop for-comprehension