2017-06-20 1 views
1

Das Endergebnis Pandas Data Frame muss in etwa so aussehen.mit zwei Spalten Join, füllen Sie Spalten in einem Pandas Datenrahmen aus vier anderen Datenrahmen

 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 

Der Ausgangspunkt ist ein Datenrahmen mit dieser Struktur.

 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 

... und mehrere Datenrahmen, die ich zum Ausfüllen der Felder Name und Steuerrate verwenden muss.

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 

Ich brauche die letzteren Datenrahmen mit dem ersten zusammenpassen, basierend auf den jurisdiction und FID Spalten und bevölkern die name und rate Spalten. Ich habe es geschafft, eine einzelne Datenrahmen mit einem der letzteren Datenrahmen mit ...

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

... aber dies funktioniert nur für eine der Tabellen Verschmelzung zu erstellen. Leider muss ich das für so wenig wie eins tun, aber nicht weniger als sieben Tische. Das ist seit über zwei Tagen ein Schmerz. Bitte zögern Sie nicht, um mehr Klarheit zu bitten, wenn ich nicht klar genug in meiner Frage war, und danke Ihnen im Voraus für Ihre Hilfe.

Antwort

3

Sie können zuerst alle Zuständigkeitstabellen verketten und dann merge verwenden. Es würde ungefähr so ​​aussehen.

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']) 
+0

Ted, das ist genial! Ich danke dir sehr! Du schaukelst! – knu2xs

Verwandte Themen