I have 3 Dataframes like the ones below with IDs that may not necessarily occur in all
DF1:
  ID |    Name     |   Phone#   |  Country   | State   | Amount_month1
0210 |  John K.    | 8942829725 |   USA      |  PA     | 1300
0215 |  Peter      | 8711234566 |   USA      |  KS     | 50
2312 |  Steven     | 9012341221 |   USA      |  TX     | 1000
0005 |  Haris      | 9167456363 |   USA      |  NY     | 1200
DF2:
  ID |    Name     |   Phone#   |  Country   | State   | Amount_month2
0210 |  John K.    | 8942829725 |   USA      |  PA     | 200
2312 |  Steven     | 9012341221 |   USA      |  TX     | 350
2112 |  Jerry      | 9817273794 |   USA      |  CA     | 100
DF3:
  ID |    Name     |   Phone#   |  Country   | State   | Amount_month3
0210 |  John K.    | 8942829725 |   USA      |  PA     | 300
0005 |  Haris      | 9167456363 |   USA      |  NY     | 1250
1212 |  Jerry      | 9817273794 |   USA      |  CA     | 1200
1210 |  Drew       | 8012341234 |   USA      |  TX     | 1400
I would like to join these 3 dataframes by ID and add the varying column amounts as separate columns, the missing amount values can be either 0 or NA such as:
   ID |    Name  |   Phone#   |  Country |State| Amount_month1 | Amount_month2 | Amount_month3
0210  |  John K. | 8942829725 |   USA    | PA  |  1300         |  200          | 300
0215  |  Peter   | 8711234566 |   USA    | KS  |  50           |  0            | 0
2312  |  Steven  | 9012341221 |   USA    | TX  |  1000         |  350          | 0
0005  |  Haris   | 9167456363 |   USA    | NY  |  1200         |  0            | 1250 
1212  |  Jerry   | 9817273794 |   USA    |  CA |  0            | 100           | 1200      
1210  |  Drew    | 8012341234 |   USA    |  TX |  0            | 0             | 1400
 
     
    