为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas:做嵌套 for 循环的更有效方法加上 if

Pandas:做嵌套 for 循环的更有效方法加上 if

喵喵时光机 2022-12-06 16:25:14
我有一个名为 namelist 的列表,其中包含 1000 个名称和一个名为 df_all 的数据框,其中包含所有 1000 个名称,但由于时间戳不同而具有重复的行。df_all 的 Len 大约是 2000+。我想将这些数据拆分成单独的数据帧。我的代码如下:df_store = [] for i in range(len(namelist)) :    temp = []     for j in range(len(df_all)):    if(df_all['name'] == namelist[i]) :        temp1.append(df_all[j,:]:        temp_df=pd. DataFrame(temp1).reset_index(drop=1)    df_store.append(temp_df)此代码需要 15 分钟才能循环。我想知道是否有办法更有效地做到这一点?我需要 df_store 是可迭代的,这样每个迭代器都是一个不同名称的 df。
查看完整描述

1 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

您不需要运行两个循环来获得结果。Pandas DataFrame 提供布尔数组索引,它也非常快。请检查以下内容:


df_store = [] 

for i in range(len(namelist)) :

    temp_df = df_all[df_all.name==namelist[i]].copy()

    df_store.append(temp_df)

在这里我使用了复制函数,因为 df_all 上的布尔索引将返回 df_all 上的视图,并且修改其中的任何内容都会对原始 df_all 产生相同的影响。


希望这可以帮助!!


查看完整回答
反对 回复 2022-12-06
  • 1 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信