我想知道如何使用多个数据帧。 我有三个数据帧,需要过滤这些值(注意所有数据帧的行数不同)
例如,我现在的代码很慢,如下所示:
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
多谢各位
目前没有回答
相关问题 更多 >
编程相关推荐