根据无关列的唯一性寻找两列的并集

2024-09-29 21:29:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力确定每个学生将如何在头对头的基础上,就他们所上的课和完成的项目

scores.csv:https://pastebin.com/FxUCb4xT

import pandas as pd
df = pd.read_csv("Documents/scores.csv")

student_ids = df.student_id.unique()

for id in student_ids:
    to_analyse = pd.merge(df,df[df['student_id'] == id][['class_id','project_id']])

我最终会做我自己的事情to_analyse,但是首先使用pd.merge是非常慢的,特别是如果有10个成千上万的唯一的学生ID

有没有更有效的方法?我试过使用pivot表,但也许我用这种方法选错了树


Tags: csvto项目方法ididsdfmerge
1条回答
网友
1楼 · 发布于 2024-09-29 21:29:42

我认为使用^{}要快一点:

def f(x):
    print (pd.merge(df, x[['class_id','project_id']]))

df = df.groupby('student_id').apply(f)

不带连接列merge的解决方案^{}^{}

df['both'] = df['class_id'].astype(str)  + '_' + df['project_id'].astype(str)

def f(x):
    print (df[df['both'].isin(x['both'])])

df = df.groupby('student_id').apply(f).drop('both', axis=1)

相关问题 更多 >

    热门问题