Z pewnością brakuje mi tutaj czegoś prostego. Próba scalenia dwóch ramek danych w pandach, które mają w większości te same nazwy kolumn, ale prawy ramka danych ma kilka kolumn, których nie ma po lewej stronie i na odwrót.Pandy łączą dwie ramki danych z różnymi kolumnami
>df_may
id quantity attr_1 attr_2
0 1 20 0 1
1 2 23 1 1
2 3 19 1 1
3 4 19 0 0
>df_jun
id quantity attr_1 attr_3
0 5 8 1 0
1 6 13 0 1
2 7 20 1 1
3 8 25 1 1
Próbowałem łączenia z outer join:
mayjundf = pd.DataFrame.merge(df_may, df_jun, how="outer")
Ale że plony:
Left data columns not unique: Index([....
Mam określone również pojedynczą kolumnę do przyłączenia (on = " id ", np.), ale to powiela wszystkie kolumny z wyjątkiem" id "jak attr_1_x, attr_1_y, co nie jest idealne. Ja również przeszedł całą listę kolumn (jest ich wiele) na "ON":
mayjundf = pd.DataFrame.merge(df_may, df_jun, how="outer", on=list(df_may.columns.values))
co daje:
ValueError: Buffer has wrong number of dimensions (expected 1, got 2)
Czego mi brakuje? Chciałbym otrzymać plik df z dodanymi wszystkimi wierszami, a attr_1, attr_2, attr_3 wypełnione, gdzie to możliwe, NaN, gdzie nie pojawiają się. Wydaje się to być dość typowym przepływem pracy w celu zmieniania danych, ale utknąłem.
Z góry dziękuję.
myślę chcesz 'mayjundf = pd .DataFrame.merge (df_may, df_jun, how = "outer", on = 'id') ' – EdChum
Podałeś" how "dwa razy, wydajność: SyntaxError: argument słowa kluczowego powtórzony – economy
Właściwie myślę, że chcesz:' pd.concat ([df_may, df_jun], axis = 0, ignore_index = True) ' – EdChum