danke für Deine Antwort.
Code: Alles auswählen
# Import Module
import pandas as pd
import numpy as np
col = 'Bezeichnung'
tl1 = {'Bezeichnung': {0: 'Zimmer' , 1: '4906 Hotelkosten für Überbuchung' , 2: '8310 Logis 7% USt' ,
3: '8311 Sonstige Logis 7% USt' , 4: '8950 Nicht steuerbare Umsätze (In' ,
5: '83105 Logis 5% USt' , 6: '83115 Sonstige Logis 5% USt' , 7: 'Essen' ,
8: '8300 Cateringerlöse 7% USt' , 9: '8400 Room Service Food allg. Ste' ,
10: '8401 Restaurant 2 Food allg. Steu' , 11: '8402 Restaurant 1 Food allg.Steue' ,
12: '8403 Bar Food allg. Steuersatz' , 13: '8404 Tagung Food allg. Steuersatz' ,
14: '8421 Erlöse Food Frühstück allg. S' , 15: '84005 Room Service Food 5% US' ,
16: '84015 Restaurant 2 Food 5% UST' , 17: '84025 Restaurant 1 Food 5% UST' ,
18: '84035 Bar Food 5% UST' , 19: '84045 Tagung Food 5% UST' ,
20: '84055 Bankett Food 5% UST' , 21: '84215 Erlöse Food Frühstück 5%' , 22: 'Getränke' ,
23: '8406 Room Service Beverage allg.'} ,
'2020': {0: '905.450' , 1: '0' , 2: '414.357' , 3: '5.319' , 4: '41.948' , 5: '439.539' , 6: '4.287' ,
7: '181.595' , 8: '720' , 9: '2.475' , 10: '8.916' , 11: '20.421' , 12: '2.089' , 13: '21.901' ,
14: '42.392' , 15: '2.829' , 16: '2.417' , 17: '14.106' , 18: '1.222' , 19: '15.574' , 20: '2.563' ,
21: '43.972' , 22: '82.917' , 23: '244'} ,
'2019': {0: '2.957.349' , 1: '-760' , 2: '2.922.236' , 3: '19.271' , 4: '16.602' , 5: '0' , 6: '0' ,
7: '645.880' , 8: '2.102' , 9: '6.906' , 10: '112.768' , 11: '126.883' , 12: '17.172' , 13: '129.962' ,
14: '250.087' , 15: '0' , 16: '0' , 17: '0' , 18: '0' , 19: '0' , 20: '0' , 21: '0' , 22: '318.459' ,
23: '1.131'} ,
'2018': {0: '2.797.634' , 1: '-92' , 2: '2.756.496' , 3: '18.437' , 4: '22.794' , 5: '0' , 6: '0' ,
7: '602.267' , 8: '2.278' , 9: '5.038' , 10: '123.446' , 11: '92.245' , 12: '19.996' , 13: '114.940' ,
14: '244.323' , 15: '0' , 16: '0' , 17: '0' , 18: '0' , 19: '0' , 20: '0' , 21: '0' , 22: '301.600' ,
23: '1.030'} ,
'2017': {0: '2.947.890' , 1: '0' , 2: '2.910.575' , 3: '14.839' , 4: '22.476' , 5: '0' , 6: '0' , 7: '688.323' ,
8: '929' , 9: '8.624' , 10: '101.476' , 11: '95.393' , 12: '23.785' , 13: '187.388' , 14: '270.729' ,
15: '0' , 16: '0' , 17: '0' , 18: '0' , 19: '0' , 20: '0' , 21: '0' , 22: '348.378' , 23: '1.631'}}
tl2 = {'Bezeichnung': {0: 'Zimmer' , 1: '8310 Logis USt erm.' , 2: '8311 Sonstige Logis USt erm.' ,
3: '8950 Nicht steuerbare Umsätze (Inn' , 4: 'Essen' , 5: '8300 Cateringerlöse 7% USt' ,
6: '8400 Room Service Food allg. Steue' , 7: '8401 Restaurant 2 Food allg. Steuer' ,
8: '8402 Restaurant 1 Food allg.Steuers' , 9: '8403 Bar Food allg. Steuersatz' ,
10: '8404 Tagung Food allg. Steuersatz' , 11: '8405 Bankett Food allg. Steuersatz' ,
12: '8421 Erlöse Food Frühstück allgem.' , 13: 'Getränke' ,
14: '8406 Room Service Beverage allg. S' , 15: '8407 Restaurant 2 Beverage allg. St' ,
16: '8408 Restaurant 1 Beverage allg. St' , 17: '8409 Catering Beverage allg. Steuer' ,
18: '8413 Bar Beverage allgem.Steuersat' , 19: '8419 Tagung Beverage allgem.Steue' ,
20: '8420 Bankett Beverage allg. Steuers' , 21: '8423 Getränke Frühstück allgem.Ste' ,
22: 'Minibar' , 23: '8414 Minibar allgem.Steuersatz'} ,
'2017': {0: '2.976.479' , 1: '2.928.815' , 2: '21.797' , 3: '25.867' , 4: '622.322' , 5: '1.653' , 6: '6.597' ,
7: '96.953' , 8: '98.265' , 9: '23.302' , 10: '141.156' , 11: '0' , 12: '254.396' , 13: '324.966' ,
14: '1.080' , 15: '23.602' , 16: '44.395' , 17: '505' , 18: '67.266' , 19: '78.989' , 20: '55' ,
21: '109.073' , 22: '19.547' , 23: '19.547'} ,
'2016': {0: '2.947.890' , 1: '2.910.575' , 2: '14.839' , 3: '22.476' , 4: '688.323' , 5: '929' , 6: '8.624' ,
7: '101.476' , 8: '95.393' , 9: '23.785' , 10: '187.388' , 11: '0' , 12: '270.729' , 13: '348.378' ,
14: '1.631' , 15: '25.657' , 16: '37.459' , 17: '269' , 18: '65.944' , 19: '100.698' , 20: '691' ,
21: '116.029' , 22: '19.719' , 23: '19.719'} ,
'2015': {0: '2.376.582' , 1: '2.341.732' , 2: '18.540' , 3: '16.310' , 4: '551.994' , 5: '441' , 6: '6.802' ,
7: '83.296' , 8: '87.639' , 9: '20.253' , 10: '142.562' , 11: '0' , 12: '211.002' , 13: '277.536' ,
14: '986' , 15: '21.180' , 16: '33.064' , 17: '71' , 18: '49.610' , 19: '81.878' , 20: '318' ,
21: '90.429' , 22: '16.818' , 23: '16.818'} ,
'2014': {0: '2.425.115' , 1: '2.370.878' , 2: '15.909' , 3: '38.328' , 4: '568.161' , 5: '222' , 6: '4.950' ,
7: '44.009' , 8: '90.003' , 9: '20.889' , 10: '148.670' , 11: '25.437' , 12: '233.981' , 13: '281.672' ,
14: '1.009' , 15: '14.645' , 16: '31.167' , 17: '0' , 18: '51.831' , 19: '80.105' , 20: '2.647' ,
21: '100.267' , 22: '17.189' , 23: '17.189'} ,
}
df1 = pd.DataFrame(tl1)
df2 = pd.DataFrame(tl2)
df2 = df2.drop(['2017'], 1)
temp = pd.merge(df1, df2, on=col, how='outer', indicator=False)
temp = temp.replace(np.nan, '0')
Es handelt sich hier um Auszüge aus Betriebswirtschaftlichen Auswertungen für verschiedene Zeiträume. Aufgrund der verschiedenen Zeiträume unterscheiden sich die in Spalte Bezeichnung dargestellten Konten teilweise. Mein Ziel ist es, die beiden Datenbestände zusammenzuführen, so dass ich sie nach Excel exportieren kann. Wichtig ist dabei der Erhalt des grundlegenden Gliederungsschemas. Was mir an dem Ergebnis nicht 100% gefällt, ist die Tatsache, dass bspw. alle Konten die mit 84 beginnen entsprechend mit den jeweiligen Werten aufeinander folgen sollten. Man kann das aber nicht durch eine Sortierung der gesamten Spalte lösen, da dann der grundlegende Aufbau geändert würde.
Verstehst Du in etwa worauf ich hinaus will oder soll ich es noch mehr an einem Beispiel verdeutlichen?