使用两列连接,在四个其他数据帧中填充一个pandas数据帧中的列

时间:2017-06-20 04:44:46

标签: python pandas dataframe calculated-columns

最终结果Pandas Data Frame需要看起来像这样。

        aggregate_FID   jurisdiction    FID       name           rate
2217    750             municipal       405       Auburn         0.093
2218    751             municipal       81        Bonney Lake    0.088
2219    752             municipal       405       Auburn         0.093
2220    753             municipal       171       Steilacoom     0.094
2221    754             municipal       235       Lakewood       0.094
2222    755             municipal       176       Fircrest       0.094
2223    750             state           1         Washington     0.065
2224    751             state           1         Washington     0.065

起点是具有这种结构的数据框架。

        aggregate_FID   jurisdiction    FID
2217    750             municipal       405
2218    751             municipal       81
2219    752             municipal       405
2220    753             municipal       171
2221    754             municipal       235
2222    755             municipal       176
2223    750             state           1
2224    751             state           1

...以及我需要使用多个数据框来填充名称和税率字段。

    FID name        rate    jurisdiction
0   1   Waterville  0.082   municipal
1   2   Riverside   0.081   municipal
2   3   Pierce HBZ  0.079   municipal
3   4   Cle Elum    0.080   municipal
4   5   Pacific     0.095   municipal

    FID name        rate    jurisdiction
0   1   Washington  0.065   state

我需要根据jurisdictionFID列匹配后面的数据框,并填充namerate列。我已设法使用...

创建与后一个数据帧之一合并的单个数据帧

df_merge = pd.merge(left=df_aggregate, right=df_jurisdiction, how='left', on=['FID', 'jurisdiction'])

...但这仅适用于其中一个表格。不幸的是,我需要这样做只需一个,但多达七个表。这已经过了两天多的痛苦。如果我的问题不够清楚,请随时要求更多说明,并提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您可以先连接所有辖区表,然后使用merge。它看起来像这样。

j_all = pd.concat([j1, j2, j3, j4, j5, j6, j7])
df_merge = pd.merge(left=df_aggregate, right=j_all, how='left', on=['FID', 'jurisdiction'])