Weitere allgemeine Antwort zu machen ... ich zuerst den gemeinsamen Index nehme beiden Datenrahmen für die Synchronisierung, dann werde ich jeden von ihnen zu meinem Muster verbinden (Daten) und ich werde die Spalten der Summe die gleichen Namen und kommen schließlich beiden Datenrahmen (hinzugefügt Spalten in einem von ihnen zu löschen),
Sie ein Beispiel sehen kann (mit Googles Aktienkursen von google gemacht) hier:
import numpy as np
import pandas as pd
import datetime as dt
prices = pd.DataFrame([[553.0, 555.5, 549.3, 554.11, 0],
[556.8, 556.8, 544.05, 545.92, 545.92],
[545.5, 546.89, 540.97, 542.04, 542.04]],
index=[dt.datetime(2014,11,04), dt.datetime(2014,11,05), dt.datetime(2014,11,06)],
columns=['Open', 'High', 'Low', 'Close', 'Adj Close'])
corrections = pd.DataFrame([[0, 555.22], [1238900, 0]],
index=[dt.datetime(2014,11,3), dt.datetime(2014,11,4)],
columns=['Volume', 'Adj Close'])
dates = pd.DataFrame(prices.index, columns = ['Dates']).append(pd.DataFrame(corrections.index, columns = ['Dates'])).drop_duplicates('Dates').set_index('Dates').sort(axis=0)
df_corrections = dates.join(corrections).fillna(0)
df_prices = dates.join(prices).fillna(0)
for col in prices.columns:
if col in corrections.columns:
df_prices[col]+=df_corrections[col]
del df_corrections[col]
df_prices = df_prices.join(df_corrections)
Können Sie erklären, was Sie wollen passieren, wenn ein Element in einem oder beiden Datenrahmen nicht existiert? Sie sagen, wenn das Element nicht in * einem * Datenrahmen existiert, sollte es als Null behandelt werden --- meinst du, der Wert in diesem Datenrahmen sollte als Null behandelt und zu dem Wert aus dem anderen Datenrahmen addiert werden, oder meinst du? Der Wert im Ergebnisdatenfeld sollte Null sein? Du sagst auch 'df1 + df2' funktioniert nicht, weil es NaN gibt, wenn beide das Element nicht haben. Was möchten Sie in diesem Fall tun? Sie wollen eine Null im Ergebnis? – BrenBarn