ich diesesmit Daten in einem Wörterbuch Spalten auf einem Pandas Datenrahmen hinzufügen
date_loc timestamp
id
1 2017-05-29 1496083649
2 2017-05-29 1496089320
3 2017-05-29 1496095148
4 2017-05-30 1496100936
...
und ein dict wie diese
observations = {
'1496089320': {
'col_a: 'value_a',
'col_b: 'value_b',
'col_c: 'n/a'
},
'1496100936' : {
'col_b: 'value_b'
},
...
}
Ich möchte alle hinzufügen die eine Pandas Dataframe p_df
wie haben Werte, die innerhalb des observations
Unterdikts mit ihren jeweiligen Schlüsseln als Spaltennamen enthalten sind, wenn die Schlüssel im dict auch in den timestamp
Spalten existieren, so dass der resultierende Datenrahmen
date_loc timestamp col_a col_b col_c
id
1 2017-05-29 1496083649
2 2017-05-29 1496089320 value_a value_b n/a
3 2017-05-29 1496095148
4 2017-05-30 1496100936 value_b
...
habe ich versucht, mit verschiedenen Methoden (agg()
, apply()
, iterrows()
), aber nichts funktioniert noch. Hier ist zum Beispiel meines letzten Versuch
p_df['col_a'] = ''
p_df['col_b'] = ''
p_df['col_c'] = ''
for index, row in p_df.iterrows():
ts = p_df.loc[index, 'timestamp']
if ts in observations:
# how to concat column values in this row?
# end if
#end for
wohl fühle ich mich gibt es auch einen besseren Ansatz als Zeilen des Datenrahmen laufen, so dass ich bin offen für bessere Alternativen als diese.
es funktioniert fast, danke, aber 1) mit 'fillna()' Ich habe diese error: 'raise AssertionError (" Lücken in blk ref_locs ")', ohne dass es funktioniert: 2) in meinem dict habe ich viele Schlüssel nicht im Datenframe enthalten, so dass die Zusammenführung mir viele leere Zeilen gibt – fcalderan
Sorry, nicht Lesen Sie Ihre Frage sehr sorgfältig. Sieht so aus, als ob du einen Link anstelle eines vollen Joins brauchst. Nicht sicher über das 'fillna()' Problem obwohl. Ich bin noch nie auf einen Fehler mit "fillna" wie diesem gestoßen. – Psidom
danke, mit einem linken Join funktioniert gut. – fcalderan