Ich habe zwei Datenrahmen, df1
:Python: Wie findet man Werte in einem anderen Datenrahmen?
df1.head(6)
t day node s e i r sm em im
491325 100 0 0 9 12 21 95 2 4 17
491326 100 0 1 8 16 17 140 7 5 40
491327 100 0 2 8 9 17 143 0 4 38
491328 100 0 3 20 15 37 259 4 7 60
491329 100 0 4 8 13 11 85 1 1 20
491330 100 0 5 0 4 6 37 0 0 10
und df2
:
df2.head(6)
node original lat lon r
0 0 50405 1.299033 103.83828 0
1 1 50404 1.299033 103.83828 0
2 2 50405 1.299033 103.83828 0
3 3 50402 1.299033 103.83828 0
4 4 6101 1.299033 103.83828 0
5 5 9821 1.332867 103.95767 0
I df2.r
basierend auf df1.r
aktualisieren möchten, und ich bin eine Schleife zu tun:
for j in df1.index:
tmp = df2[df2.node == df1.node[j]]
df2.r[tmp.index[0] = df1.r[j]
Gibt es eine bessere Möglichkeit, die beiden DataFrames zusammenzuführen?
Interessant, ist nicht notwendig Parameter 'on' hinzufügen? – jezrael
@jezrael Nun, es ist mehr Python, weil "explizit ist besser als implizit", aber mein Verständnis ist, dass Pandas die Merge-Schlüssel ableiten werden. EDIT: [Die Dokumente bestätigen dies] (http://pandas.pydata.org/pandas-docs/stable/merging.html#database-style-dataframe-joining-merging) "on:' Wenn nicht bestanden und 'left_index 'und' right_index' sind 'False', der Schnittpunkt der Spalten in den DataFrames wird als Join-Schlüssel gewertet" –
@michael_j_ward True (explizit ist besser als implizit), das Problem ist, wenn r in beiden oder if ist Einige Spalten sind dort unerwartet. In diesem Fall übergeben Sie einen zweispaltigen Teilrahmen und wir haben die Spalte r in der obigen Zeile gelöscht. In der Regel ist das Übergeben "on" eine gute Idee. Wenn es andere freigegebene Spalten gibt, werden diese suffi- ziert, so dass selbst dann keine Garantie besteht. –