Ich habe rand_df1:

np.random.seed(1)
rand_df1 = pd.DataFrame(np.random.randint(0, 40, size=(3, 2)), columns=list('AB'))
print(rand_df1, '\n')
    A   B
0  37  12
1   8   9
2  11   5 

Auch rand_df2:

rand_df2 = pd.DataFrame(np.random.randint(0, 40, size=(3, 2)), columns=list('AB'))
rand_df2 = rand_df2.loc[rand_df2.index.repeat(rand_df2['B'])]
print(rand_df2, '\n')
    A  B
1  16  1
2  12  7
2  12  7
2  12  7
2  12  7
2  12  7
2  12  7
2  12  7

Ich muss die Werte in der ersten Datenrahmenspalte 'A' mit den Werten in 'A' des zweiten Datenrahmens nach Index neu zuweisen. Gewünschte Ausgabe von rand_df1:

    A  B
0  37  12
1  16  1
2  12  7
2  12  7
2  12  7
2  12  7
2  12  7
2  12  7
2  12  7
0
Warrior404 1 Sept. 2020 im 15:28

2 Antworten

Beste Antwort

Vielen Dank an Henry Yik für seine Lösung:

rand_df2.combine_first(rand_df1)
    A  B
0  37  12
1  16  1
2  12  7
2  12  7
2  12  7
2  12  7
2  12  7
2  12  7
2  12  7

Außerdem wurde dies mit einer zusätzlichen Spalte in einem Datenrahmen getestet, die im zweiten Datenrahmen und in der Rückwärtssituation nicht angezeigt wird. Es funktioniert gut.

0
Warrior404 1 Sept. 2020 im 12:58

Wenn ich Ihre Frage richtig interpretiert habe, möchten Sie neue Zeilen an rand_df2 anhängen. Diese Zeilen sind aus rand_df1 auszuwählen, wo sie einen Index haben, der in rand_df2 nicht erscheint. Ist das korrekt?

Dies wird den Trick machen:

rand_df2_new = rand_df2.append(rand_df1[~rand_df1.index.isin(rand_df2.index)]).sort_index()
1
DaveB 1 Sept. 2020 im 12:34