Ich habe zwei Datenrahmen wie dieseSubtrahierend Datenrahmen mit ungleicher Anzahl von Zeilen
import pandas as pd
import numpy as np
np.random.seed(0)
df1 = pd.DataFrame(np.random.randint(10, size=(5, 4)), index=list('ABCDE'), columns=list('abcd'))
df2 = pd.DataFrame(np.random.randint(10, size=(2, 4)), index=list('CE'), columns=list('abcd'))
a b c d
A 5 0 3 3
B 7 9 3 5
C 2 4 7 6
D 8 8 1 6
E 7 7 8 1
a b c d
C 5 9 8 9
E 4 3 0 3
Der Index der df2
ist immer eine Teilmenge des Index der df1
und die Spaltennamen identisch sind.
Ich möchte einen dritten Datenrahmen erstellen df3 = df1 - df2
. Wenn man das tut, erhält man
a b c d
A NaN NaN NaN NaN
B NaN NaN NaN NaN
C -3.0 -5.0 -1.0 -3.0
D NaN NaN NaN NaN
E 3.0 4.0 8.0 -2.0
Ich habe nicht die NAs
im ouput will, aber die jeweiligen Werte von df1
. Gibt es eine kluge Art, z.B. fillna
mit den Werten df1
in den Zeilen, die nicht in df2
enthalten sind?
wäre Eine Abhilfe wie nur die erforderlichen Zeilen die subtrahieren zu tun:
sub_ind = df2.index
df3 = df1.copy()
df3.loc[sub_ind, :] = df1.loc[sub_ind, :] - df2.loc[sub_ind, :]
, die mir die gewünschte Ausgabe
a b c d
A 5 0 3 3
B 7 9 3 5
C -3 -5 -1 -3
D 8 8 1 6
E 3 4 8 -2
aber vielleicht gibt eine einfache Möglichkeit, dies zu erreichen, gibt es?
Was ist los mit 'df1-df2'? Ist das nicht Ihre gewünschte Ausgabe? – blacksite
Nein, ich will nicht die NAs aber die Werte von df1; Ich aktualisiere die Fragen. – Cleb