gpt4 book ai didi

python - 如何使用 iterrows() 创建新的数据框?

转载 作者:行者123 更新时间:2023-12-01 07:48:04 24 4
gpt4 key购买 nike

当我为每个客户创建新的数据框架时,我还想创建一个将所有这些数据框架附加在一起的巨大数据框架。

我创建了一个函数来按照我需要的方式对用户数据进行分组。现在我想迭代另一个包含唯一用户 key 的数据帧,并使用这些用户 key 为每个用户创建数据帧。然后我想将所有这些数据帧聚合成一个巨大的数据帧。

for index, row in unique_users.iterrows():
customer = user_df(int(index))
print(customer)

此函数按预期工作,并为每个客户打印 df

for index, row in unique_users.iterrows():
top_users = pd.DataFrame()
customer = user_df(int(index))
top_users = top_users.append(customer)
print(top_users)

这仅打印出最后一个客户的 df

我希望当它迭代并创建一个新的客户 df 时,它会将其附加到 top_user df 中,所以最后我有一个巨大的 top_user df。但它只包含最后一个客户的 df。

最佳答案

advised作者:@unutbu:永远不要在 for 循环内调用 DataFrame.appendpd.concat。它会导致二次复制。相反,构建一个数据帧列表以在循环外调用pd.concat一次

实际上,您可以使用列表/字典理解来处理数据框构建,而无需 iterrows 而是直接使用索引值。使用任一推导式,您都可以避免初始化容器并为其迭代分配的记录。

# LIST COMPREHENSION APPROACH
df_list = [user_df(int(idx)) for idx in unique_users.index.values]
top_users = pd.concat(df_list, ignore_index=True)

# DICTIONARY COMPREHENSION APPROACH
df_dict = {idx: user_df(int(idx)) for idx in unique_users.index.values}
top_users = pd.concat(df_dict, ignore_index=True)

关于python - 如何使用 iterrows() 创建新的数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56351170/

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