NaNs, wenn die Subtraktion von dataframes pandas
Habe ich zwei dataframes mit nur wenig überlappenden Indizes und Spalten.
old = pd.DataFrame(index = ['A', 'B', 'C'],
columns = ['k', 'l', 'm'],
data = abs(np.floor(np.random.rand(3, 3)*10)))
new = pd.DataFrame(index = ['A', 'B', 'C', 'D'],
columns = ['k', 'l', 'm', 'n'],
data = abs(np.floor(np.random.rand(4, 4)*10)))
Ich möchte, um die Differenz zu ermitteln zwischen Sie und versuchte,
delta = new - old
Dieser gibt viele NaNs, wo Indizes und Spalten nicht übereinstimmen. Ich möchte zur Behandlung der Abwesenheit der Indizes und Spalten, die als Nullen, (alt['n', 'D'] = 0). alte werden immer ein Unterraum von neuen.
Irgendwelche Ideen?
BEARBEITEN:
Ich denke, ich habe es nicht erklären gründlich genug. Ich will nicht, um zu füllen das delta dataframe mit Nullen. Ich möchte zur Behandlung von fehlenden Indizes und Spalten in alten, als wären Sie Nullen. Ich würde dann, um den Wert im neuen['n', 'D'] in der delta-anstelle eines NaN.
- rufen Sie
delta = delta.fillna(0)
zu ersetzen, die nan-Werte - Ich denke, ich habe es nicht erklären gründlich genug. Ich will nicht, um zu füllen das delta dataframe mit Nullen. Ich möchte zur Behandlung von fehlenden Indizes und Spalten in alten, als wären Sie Nullen. Ich würde dann, um den Wert im neuen['n', 'D'] in der delta-anstelle eines NaN.
- Ich werde wiedereröffnet, sobald ich wieder an pc, im Grunde, was Sie tun möchten, ist nehmen Sie die union der beiden dfs-Spalten und-Indizes, reindex beide dfs und füllen nan mit null und dann subtrahieren
- Ich denke, Sie können einfach verwenden Sie
sub
mitfill_value=0
siehe meine Antwort
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
sub
mitfill_value=0
: