给定与某些特定值匹配的行,迭代数据帧其余部分的最快方法是什么?例如,假设我有一个包含“日期”、“名称”和“电影”的数据框。可能有很多用户和电影。我想要所有看过同一个电影的约翰和艾丽西亚以前看过的电影。输入数据帧可以是: date name movie0 2018-01-16 10:33:59 Alicia Titanic1 2018-01-17 08:49:13 Chandler Avatar2 2018-01-18 09:29:09 Luigi Glass3 2018-01-19 09:45:27 Alicia Die Hard4 2018-01-20 10:08:05 Bouchra Pulp Fiction5 2018-01-26 10:21:47 Bariza Glass6 2018-01-27 10:15:32 Peggy Bumbleblee7 2018-01-20 10:08:05 John Titanic8 2018-01-26 10:21:47 Bariza Glass9 2018-01-27 10:15:32 John Titanic结果应该是: date name movie0 2018-01-16 10:33:59 Alicia Titanic7 2018-01-20 10:08:05 John Titanic9 2018-01-27 10:15:32 John Titanic目前我正在做以下事情:alicias = df[df['Name'] == 'Alicia']df_res = pd.DataFrame(columns=df.columns)for i in alicias.index: df_res = df_res.append(alicias.loc[i], sort=False) df_johns = df[(df['Date'] > alicias['Date'][i]) &(df['Name'] == 'John') &(df['Movie'] == alicias['Movie'][i)] df_res = df_res.append(df_johns, sort=False)它有效,但这非常慢。我也可以使用更快的 groupby,但我希望结果保留初始行(示例中带有 'Alicia' 的行),我找不到使用 groupby 执行此操作的方法。有什么帮助吗?
添加回答
举报
0/150
提交
取消