Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有多个数据帧的数据帧_Python_Pandas_Data Science_Loc - Fatal编程技术网

Python 具有多个数据帧的数据帧

Python 具有多个数据帧的数据帧,python,pandas,data-science,loc,Python,Pandas,Data Science,Loc,我想知道如何使用多个数据帧。 我有三个数据帧,需要过滤这些值(注意所有数据帧的行数不同) 例如,我现在的代码很慢,如下所示: df1['score'] = None df1['complited_activities'] = 0 for i in range(len(df1)): values = df_enrollment.iloc[i] for j in range(len(df2)): df2_values =

我想知道如何使用多个数据帧。 我有三个数据帧,需要过滤这些值(注意所有数据帧的行数不同)

例如,我现在的代码很慢,如下所示:

    df1['score'] = None
    df1['complited_activities'] = 0
    for i in range(len(df1)):
        values = df_enrollment.iloc[i]
        for j in range(len(df2)):
            df2_values = score_df.iloc[j]
            if values['fild_16'] == score_values['user_id'] and values['fild_15'] == score_values['course_id']:
                df1.iloc[i, df1.columns.get_loc('score')] = score_values['progress_score']
        for k in range(len(df3)):
            sub_values = df3.iloc[k]
            if values['fild_16'] == sub_values['user_id']:
                df1.iloc[i, df1.columns.get_loc('complited_activities')] = sub_values['count']
在这里,您可以看到程序首先从df1数据帧(values变量)获取行。 之后,它从df2数据帧中获取一行并检查该语句(值['fild_16']==分数值['user_id']和值['fild_15']==分数值['course_id'])。若语句为true,我将使用iloc设置列分数的值。 在df3的相同过程之后

我怎么能不用像loc这样的循环呢

df1
fild_16, fild_15, score, complited_activities
1,         14,      0          None
2,         15,      0          None
3,         16,      0          None
4,         17,      0          None
df2
user_id, course_id
15          14
2           15
3           16
df3
user_id,   score
135         145
2           42
4           412

Expected output:
fild_16, fild_15, score, complited_activities
1,         14,      0          None
2,         15,      1          42
3,         16,      1          None
4,         17,      0          412

In df1 fild_16 is user_id, fild_15 - course_id

谢谢你

请分享样本数据和预期结果output@sammywemmy共享