Ich versuche, den Inhalt eines Datenrahmens an einen anderen anzuhängen. Hier ist ein grundlegendes Beispiel dafür, womit ich arbeite:
import numpy as np
import pandas as pd
df1 = pd.DataFrame({'Id': ['001','001','001','002','002','002','004','004'],
'Date':['2020-01-01','2020-01-02','2020-01-03','2020-01-01','2020-01-02','2020-01-03','2020-01-02','2020-01-03'],
'Quantity': [100,100,100,50,50,50,60,60],
'fx' :[1,1,1,2,2,2,1,1],
'fy' : [1,1,1,3,3,3,1,1]})
df2 = pd.DataFrame({'Id': ['001','001','001','002','002','002', '003'],
'Date':['2019-01-01','2019-01-02','2019-01-03','2019-01-01','2019-01-02','2019-01-03','2019-02-02'],
'Quantity': [100,100,100,50,50,50,20]})
Jetzt möchte ich den Inhalt von df2 an df1 anhängen, aber das Problem ist, dass es hier und da zu etwas NaN in df1 führt
histo = df1.append(df2)
histo = histo.sort_values('Id')
print(histo)
Id Date Quantity fx fy
0 001 2020-01-01 100 1.0 1.0
1 001 2020-01-02 100 1.0 1.0
2 001 2020-01-03 100 1.0 1.0
0 001 2019-01-01 100 NaN NaN
1 001 2019-01-02 100 NaN NaN
2 001 2019-01-03 100 NaN NaN
3 002 2020-01-01 50 2.0 3.0
4 002 2020-01-02 50 2.0 3.0
5 002 2020-01-03 50 2.0 3.0
3 002 2019-01-01 50 NaN NaN
4 002 2019-01-02 50 NaN NaN
5 002 2019-01-03 50 NaN NaN
6 003 2019-02-02 20 NaN NaN
6 004 2020-01-02 60 1.0 1.0
7 004 2020-01-03 60 1.0 1.0
Die Ausgabe, die ich erreichen möchte, ist, dass für jede 'Id'-Zeile die Werte von fx und fy weiterhin gleich sind. Das Ergebnis würde folgendermaßen aussehen:
Id Date Quantity fx fy
0 001 2020-01-01 100 1.0 1.0
1 001 2020-01-02 100 1.0 1.0
2 001 2020-01-03 100 1.0 1.0
0 001 2019-01-01 100 1.0 1.0
1 001 2019-01-02 100 1.0 1.0
2 001 2019-01-03 100 1.0 1.0
3 002 2020-01-01 50 2.0 3.0
4 002 2020-01-02 50 2.0 3.0
5 002 2020-01-03 50 2.0 3.0
3 002 2019-01-01 50 2.0 3.0
4 002 2019-01-02 50 2.0 3.0
5 002 2019-01-03 50 2.0 3.0
6 003 2019-02-02 20 2.0 3.0
6 004 2020-01-02 60 1.0 1.0
7 004 2020-01-03 60 1.0 1.0
Was kann ich tun, um die oben genannte Ausgabe zu erzielen? Ich kann es nicht in der Pandas-Dokumentation finden. Vielen Dank
Verwenden Sie ffill, forward füllt den NaN-Wert mit dem letzten Nicht-NaN-Wert in einer Spalte.
histo = histo.sort_values('Id').ffill()
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen