我有三个不同的数据框(一个主数据框和两个附加数据框)。我想要向主数据框添加一列,该列的元素是另外两个数据框中的不同单元格值。我使用主数据框的两列来确定需要从两个数据框中获取数据,并使用另外两个列作为索引以选择所选数据框中的特定单元格。
master_df = pd.DataFrame({
'col1': ['M', 'F', 'F', 'M'],
'col2': [0, 1, 2, 3],
'col3': ['X', 'Z', 'Z', 'X'],
'col4': [2021, 2022, 2023, 2024]
})
df1 = pd.DataFrame({
2021: [.632, .214, .987, .555],
2022: [.602, .232, .287, .552],
2023: [.932, .209, .347, .725],
2024: [.123, .234, .9873, .5005]
})
df2 = pd.DataFrame({
2021: [.6123, .2214, .4987, .555],
2022: [.6702, .232, .2897, .552],
2023: [.9372, .2, .37, .725],
2024: [.23, .24, .873, .005]
})
对于每一行的
master_df
,如果col1
的值为'M'
且col3
的值为'X'
,我要选择df1
。如果col1
的值为'F'
且col3
的值为'Z'
,我要选择df2
。一旦我选择了适当的DataFrame
,我想使用master_df
的col2
作为行索引,master_df
的col4
作为列索引。最后,我将获得所选的单元格值,并将其放入新添加到master_df
中的列中。在这个例子中,
master_df
最终应该是这样的:master_df = pd.DataFrame({
'col1': ['M', 'F', 'F', 'M'],
'col2': [0, 1, 2, 3],
'col3': ['X', 'Z', 'Z', 'X'],
'col4': [2021, 2022, 2023, 2024],
'col5': [.632, .232, .37, .5005]
})
我尝试使用for循环遍历master_df
,但由于我正在处理的DataFrame
每个有数百万行数据,所以速度非常缓慢。有没有更高效的pandas解决方案?