In [1]:
import gspread, gspread_dataframe
from gspread_dataframe import get_as_dataframe
from oauth2client.service_account import ServiceAccountCredentials

import pandas as pd
import re

def num_to_col_letters(num) :
    letters = ''
    while num:
        mod = (num - 1) % 26
        letters += chr(mod + 65)
        num = (num - 1) // 26
    return ''.join(reversed(letters))

In [2]:
def connect_to_sheets(spreadsheet='GemeinsameBilanzierung_16_17', sheetname='') :
    
    if type(spreadsheet) is str : 
        scope = ['https://spreadsheets.google.com/feeds']
        creds = ServiceAccountCredentials.from_json_keyfile_name('client-secret.json', scope)
        client = gspread.authorize(creds)
        spreadsheet = client.open(spreadsheet)

    # Find a workbook by name and open the first sheet
    # Make sure you use the right name here.
    if sheetname == '' :
        return spreadsheet
    else :
        worksheet = spreadsheet.worksheet(sheetname)
        return worksheet

In [3]:
workbook = connect_to_sheets()
sheet = connect_to_sheets(workbook, 'August')

In [12]:
col_titles = ['description', 'date', 'amount']

budgeting = get_as_dataframe(sheet, parse_dates=True, usecols=range(4), 
                             skiprows=5, header=None).dropna(how='all')
budgeting.columns = ['budget_type'] + col_titles

max_bargeld = get_as_dataframe(sheet, parse_dates=True, usecols=range(7,10), 
                               skiprows=6, header=None).dropna(how='all')
max_bargeld.columns = col_titles
max_bargeld['money_pot'] = 'BM'

paul_bargeld = get_as_dataframe(sheet, parse_dates=True, usecols=range(10,13), 
                                skiprows=6, header=None).dropna(how='all')
paul_bargeld.columns = col_titles
paul_bargeld['money_pot'] = 'BP'

konto = get_as_dataframe(sheet, parse_dates=True, usecols=range(13,16), 
                         skiprows=6, header=None).dropna(how='all')
konto.columns = col_titles
konto['money_pot'] = 'KG'

conjoined = pd.concat([max_bargeld, paul_bargeld, konto])

In [15]:
all_info = pd.merge(budgeting, conjoined, how='outer', 
                    on=['description', 'date', 'amount'], indicator=True)

right_only = all_info[all_info['_merge'] == 'right_only']

display(right_only)


budget_type description date amount money_pot _merge
113 NaN Geld aufladen Mitarbeiter ausweis 01/08/17 -20 BM right_only
114 NaN Geld abheben 03/08/17 30 BM right_only
115 NaN Geld aufladen Trianon 02/08/17 -20 BM right_only
116 NaN Geld aus Schatulle 05/08/17 1,3 BM right_only
117 NaN Betriebsausflug 07/08/17 -18,5 BM right_only
118 NaN Geldfund 12/08/17 0,05 BM right_only
119 NaN BBk Karte Aufladen 14/08/17 -10 BM right_only
120 NaN Geld aus Schatulle 20/08/17 0,5 BM right_only
121 NaN Schatullenkorrektur 20/08/17 =2,17-1,12 BM right_only
122 NaN Schatullenkorrektur 20/08/17 -1,05 BM right_only
123 NaN Geld abheben 22/08/17 40 BM right_only
124 NaN Karte aufladen 28/08/17 -10 BM right_only
125 NaN Geld aus Schatulle NaN =1 BP right_only
126 NaN Geld aus Schatulle 08/08/17 1,35 BP right_only
127 NaN PUCK aufladen NaN -20 BP right_only
128 NaN Geld abheben 21/08/17 20 BP right_only
129 NaN Budgetbeitrag von BMS 28/07/17 1468 KG right_only
130 NaN Miete FFM auf Max Konto 02/08/17 450 KG right_only
131 NaN Ausgehen mit Kollegen 02/08/17 -20,6 KG right_only
132 NaN Abheben 03/08/17 -30 KG right_only
133 NaN Sommerticket DB 05/08/17 -96 KG right_only
134 NaN Sommerticket DB 05/08/17 -96 KG right_only
135 NaN Amazon Fail Topf 06/08/17 -4,61 KG right_only
136 NaN Handy Paul 10/08/17 -13,99 KG right_only
137 NaN Rossmann 10/08/17 -20,53 KG right_only
138 NaN Sommerticket DB 14/08/17 =-96*2 KG right_only
139 NaN Vorschuss für Sparticket 14/08/17 192 KG right_only
140 NaN Rewe 16/08/17 -3,42 KG right_only
141 NaN Real 21/08/17 -5,17 KG right_only
142 NaN Geld abheben 21/08/17 -20 KG right_only
143 NaN Geld abheben 22/08/17 -40 KG right_only
144 NaN Umbuchung 23/08/17 302,79 KG right_only
145 NaN Hotelkosten 24/08/17 -188 KG right_only
146 NaN Vorschuss Reisekosten Köln 26/08/17 193,6 KG right_only
147 NaN Prüfungsgebühr auf Max' Konto 28/08/17 15 KG right_only
148 NaN Prüfungsgebühr Dr. Hochs Konservatorium 28/08/17 -15 KG right_only
149 NaN Vodafone 28/08/17 -20,19 KG right_only

In [28]:
def simple_payment(date, description, amount, budget_type, transaction_type, money_pot): 
    new_id = id_generation(date)
    crsr = db.cursor()

    crsr.execute("INSERT INTO money_events VALUES ({}, '{}', '{}', DATE('{}'), NULL, NULL, 'auto-gen');".format(
        new_id, transaction_type, description, date))
    crsr.execute("INSERT INTO budget_events VALUES ({}, '{}', {}, NULL, DATE('{}'), NULL, NULL, 'auto-gen');".format(
        new_id, budget_type, amount, date))
    crsr.execute("INSERT INTO payments VALUES ({}, '{}', {}, NULL, NULL, DATE('{}'), NULL, NULL, 'auto-gen');".format(
        new_id, money_pot, amount, date))

    db.commit()

In [29]:
for index, row in perfect_result.iterrows() :
    simple_payment(row['date'], row['description'], row['amount'], row['budget_type'], 
                   'Kartenzahlung' if row['money_pot'] == 'KG' else 'Barzahlung', row['money_pot'])


2017-08-01 00:00:00
2017-08-02 00:00:00
2017-08-01 00:00:00
2017-08-01 00:00:00
2017-08-10 00:00:00
2017-08-03 00:00:00
2017-07-31 00:00:00
2017-07-31 00:00:00
2017-07-31 00:00:00
2017-08-01 00:00:00
2017-08-01 00:00:00
2017-08-01 00:00:00
2017-08-01 00:00:00
2017-08-01 00:00:00
2017-08-02 00:00:00
2017-08-04 00:00:00
2017-08-05 00:00:00
2017-08-05 00:00:00
2017-08-05 00:00:00
2017-08-05 00:00:00
2017-08-06 00:00:00
2017-08-06 00:00:00
2017-08-07 00:00:00
2017-08-07 00:00:00
2017-08-07 00:00:00
2017-08-07 00:00:00
2017-08-07 00:00:00
2017-08-06 00:00:00
2017-08-13 00:00:00
2017-08-13 00:00:00
2017-08-11 00:00:00
2017-08-11 00:00:00
2017-08-13 00:00:00

In [30]:
def print_action_tables() :
    crsr = db.cursor()

    for table in ['money_events', 'budget_events', 'payments'] :
        display(pd.read_sql_query('SELECT * FROM {};'.format(table), db))
    
print_action_tables()


id type description creation_date modification_dates comments complete
0 20170732 Kartenzahlung Aldi 2017-07-31 None None YES
1 20170733 Kartenzahlung Monatskarte FFM 2017-07-31 None None YES
2 20170734 Kartenzahlung Netto 2017-07-31 None None YES
3 20170802 Kartenzahlung Miete 2017-08-01 None None YES
4 20170803 Kartenzahlung Miete FFM 2017-08-02 None None YES
5 20170804 Kartenzahlung Berufsunfähigkeitsversicherung 2017-08-01 None None YES
6 20170805 Kartenzahlung Haftpflichtversicherung 2017-08-01 None None YES
7 20170806 Kartenzahlung Fitnessstudio 2017-08-03 None None YES
8 20170807 Kartenzahlung Rewe 2017-08-01 None None YES
9 20170808 Kartenzahlung Rossmann 2017-08-01 None None YES
10 20170809 Kartenzahlung DM 2017-08-01 None None YES
11 20170810 Kartenzahlung DM 2017-08-01 None None YES
12 20170811 Kartenzahlung Handy Max 2017-08-10 None None YES
13 20170812 Kartenzahlung Türkischer Supermarkt 2017-08-01 None None YES
14 20170813 Kartenzahlung Real 2017-08-02 None None YES
15 20170814 Kartenzahlung Kaufland 2017-08-04 None None YES
16 20170815 Kartenzahlung McDonalds 2017-08-05 None None YES
17 20170816 Kartenzahlung H&M 2017-08-05 None None YES
18 20170817 Kartenzahlung Rewe Wasser 2017-08-05 None None YES
19 20170818 Kartenzahlung Edeka 2017-08-05 None None YES
20 20170819 Kartenzahlung Sitzplatz reservierung 2017-08-06 None None YES
21 20170820 Kartenzahlung Amazon Bestellung 2017-08-06 None None YES
22 20170821 Kartenzahlung Rewe 2017-08-07 None None YES
23 20170822 Kartenzahlung H&M Hose 2017-08-07 None None YES
24 20170823 Kartenzahlung Briefmarken 2017-08-07 None None YES
25 20170824 Kartenzahlung Netto 2017-08-07 None None YES
26 20170825 Kartenzahlung Real 2017-08-07 None None YES
27 20170826 Kartenzahlung Amazon Festplatte Paul 2017-08-06 None None YES
28 20170827 Barzahlung Eisessen 2017-08-13 None None YES
29 20170828 Barzahlung Wasser 2017-08-13 None None YES
30 20170829 Kartenzahlung Aldi 2017-08-11 None None YES
31 20170830 Kartenzahlung Schirm Rossmann 2017-08-11 None None YES
32 20170831 Kartenzahlung Rewe 2017-08-13 None None YES
id budget_pot amount additional_description creation_date modification_dates comments complete
0 20170802 R -568.00 None 2017-08-01 None None YES
1 20170803 R -450.00 None 2017-08-02 None None YES
2 20170804 R -49.05 None 2017-08-01 None None YES
3 20170805 R -7.50 None 2017-08-01 None None YES
4 20170811 R -7.99 None 2017-08-10 None None YES
5 20170806 G -39.80 None 2017-08-03 None None YES
6 20170732 L -23.97 None 2017-07-31 None None YES
7 20170733 R -87.40 None 2017-07-31 None None YES
8 20170734 L -9.44 None 2017-07-31 None None YES
9 20170807 L -8.71 None 2017-08-01 None None YES
10 20170808 D -9.17 None 2017-08-01 None None YES
11 20170809 D -9.45 None 2017-08-01 None None YES
12 20170810 D -12.25 None 2017-08-01 None None YES
13 20170812 L -10.37 None 2017-08-01 None None YES
14 20170813 L -6.86 None 2017-08-02 None None YES
15 20170814 L -13.95 None 2017-08-04 None None YES
16 20170815 A -2.59 None 2017-08-05 None None YES
17 20170816 S -55.08 None 2017-08-05 None None YES
18 20170817 L -1.17 None 2017-08-05 None None YES
19 20170818 L -5.43 None 2017-08-05 None None YES
20 20170819 T -4.50 None 2017-08-06 None None YES
21 20170820 S -39.24 None 2017-08-06 None None YES
22 20170821 L -21.00 None 2017-08-07 None None YES
23 20170822 S -30.14 None 2017-08-07 None None YES
24 20170823 M -21.50 None 2017-08-07 None None YES
25 20170824 L -16.60 None 2017-08-07 None None YES
26 20170825 L -3.99 None 2017-08-07 None None YES
27 20170826 S -52.94 None 2017-08-06 None None YES
28 20170827 A -4.80 None 2017-08-13 None None YES
29 20170828 L -1.30 None 2017-08-13 None None YES
30 20170829 L -19.31 None 2017-08-11 None None YES
31 20170830 D -2.95 None 2017-08-11 None None YES
32 20170831 L -34.42 None 2017-08-13 None None YES
id money_pot amount additional_description budget_effect_date creation_date modification_dates comments complete
0 20170802 KG -568.00 None None 2017-08-01 None None YES
1 20170803 KG -450.00 None None 2017-08-02 None None YES
2 20170804 KG -49.05 None None 2017-08-01 None None YES
3 20170805 KG -7.50 None None 2017-08-01 None None YES
4 20170811 KG -7.99 None None 2017-08-10 None None YES
5 20170806 KG -39.80 None None 2017-08-03 None None YES
6 20170732 KG -23.97 None None 2017-07-31 None None YES
7 20170733 KG -87.40 None None 2017-07-31 None None YES
8 20170734 KG -9.44 None None 2017-07-31 None None YES
9 20170807 KG -8.71 None None 2017-08-01 None None YES
10 20170808 KG -9.17 None None 2017-08-01 None None YES
11 20170809 KG -9.45 None None 2017-08-01 None None YES
12 20170810 KG -12.25 None None 2017-08-01 None None YES
13 20170812 KG -10.37 None None 2017-08-01 None None YES
14 20170813 KG -6.86 None None 2017-08-02 None None YES
15 20170814 KG -13.95 None None 2017-08-04 None None YES
16 20170815 KG -2.59 None None 2017-08-05 None None YES
17 20170816 KG -55.08 None None 2017-08-05 None None YES
18 20170817 KG -1.17 None None 2017-08-05 None None YES
19 20170818 KG -5.43 None None 2017-08-05 None None YES
20 20170819 KG -4.50 None None 2017-08-06 None None YES
21 20170820 KG -39.24 None None 2017-08-06 None None YES
22 20170821 KG -21.00 None None 2017-08-07 None None YES
23 20170822 KG -30.14 None None 2017-08-07 None None YES
24 20170823 KG -21.50 None None 2017-08-07 None None YES
25 20170824 KG -16.60 None None 2017-08-07 None None YES
26 20170825 KG -3.99 None None 2017-08-07 None None YES
27 20170826 KG -52.94 None None 2017-08-06 None None YES
28 20170827 BM -4.80 None None 2017-08-13 None None YES
29 20170828 BM -1.30 None None 2017-08-13 None None YES
30 20170829 KG -19.31 None None 2017-08-11 None None YES
31 20170830 KG -2.95 None None 2017-08-11 None None YES
32 20170831 KG -34.42 None None 2017-08-13 None None YES

In [20]:
content = get_as_dataframe(sheet, parse_dates=True, skiprows=3, header=1)

In [21]:
display(content)


Realer Geldverbrauch Unnamed: 1 Unnamed: 2 =SUM(R[1]C[0]:R[95]C[0]) Unnamed: 4 Unnamed: 5 Unnamed: 6 Bargeld Max Unnamed: 8 =SUM(R[1]C[0]:R[97]C[0]) Bargeld Paul Unnamed: 11 =SUM(R[1]C[0]:R[97]C[0]).1 Konto Ing-DiBa Unnamed: 14 =SUM(R[1]C[0]:R[95]C[0]).1 Unnamed: 16
0 R Miete 01/08/17 -568 Haben Vermögen NaN =R[1]C[0]+R[2]C[0] Aktueller Stand NaN 47,2 Aktueller Stand NaN NaN Aktueller Stand NaN 405,74 NaN
1 R Miete FFM 02/08/17 -450 NaN Verfügung =R[-4]C[9]+R[-2]C[9]+R[-2]C[6]+R[-2]C[3]+R[-3]... Geld aufladen Mitarbeiter ausweis 01/08/17 -20 Geld aus Schatulle NaN =1 Budgetbeitrag von BMS 28/07/17 1468 NaN
2 R Berufsunfähigkeitsversicherung 01/08/17 -49,05 NaN Sparen =R[-4]C[9]+R[-6]C[9] Geld abheben 03/08/17 30 Brot 01/08/17 =-0,95 Aldi 31/07/17 -23,97 NaN
3 R Strom EnviaM NaN -51 NaN NaN NaN Geld aufladen Trianon 02/08/17 -20 Brot 08/08/17 -1,4 Monatskarte FFM 31/07/17 -87,4 NaN
4 R Vodafone NaN -19,99 Einnahmen NaN NaN Geld aus Schatulle 05/08/17 1,3 Geld aus Schatulle 08/08/17 1,35 Netto 31/07/17 -9,44 NaN
5 M Telefonie NaN -6 Budget-Einnahmen NaN NaN Betriebsausflug 07/08/17 -18,5 Geld abheben NaN 20 Haftpflichtversicherung 01/08/17 -7,5 NaN
6 R Rechtsschutzversicherung 30/01/17 -13,9 Sondereinnahmen NaN NaN Geldfund 12/08/17 0,05 PUCK aufladen NaN -20 Berufsunfähigkeitsversicherung 01/08/17 -49,05 NaN
7 R Haftpflichtversicherung 01/08/17 -7,5 Realvermögenszuwachs (1 Mo) NaN =R[-7]C[0]-Juli!R[-7]C[0] Eisessen 13/08/17 -4,8 Geld abheben 21/08/17 20 Miete 01/08/17 -568 NaN
8 G GEW NaN -2,5 Realvermögenszuwachs (3 Mo) NaN =R[-8]C[0]-'Mai+Juni'!R[-8]C[0] Wasser 13/08/17 -1,3 NaN NaN NaN Rewe 01/08/17 -8,71 NaN
9 R Semestergebühr Paul 21/06/16 =-276,91/6 NaN NaN BBk Karte Aufladen 14/08/17 -10 NaN NaN NaN Rossmann 01/08/17 -9,17 NaN
10 R GEZ 31/03/17 -17,5 Ausgaben NaN NaN Eisessen 17/08/17 -1,2 NaN NaN NaN DM 01/08/17 -9,45 NaN
11 R Handy Max 10/08/17 -7,99 Real NaN =R[-12]C[-3] Toilette 18/08/17 -0,25 NaN NaN NaN DM 01/08/17 -12,25 NaN
12 R Handy Paul 10/08/17 -7,99 NaN NaN NaN Spitzer 19/08/17 -2 NaN NaN NaN Türkischer Supermarkt 01/08/17 -10,37 NaN
13 G Spotify Max 15/08/17 -4,99 Ausgehen A =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... Geld aus Schatulle 20/08/17 0,5 NaN NaN NaN Miete FFM auf Max Konto 02/08/17 450 NaN
14 G Apple Music Paul NaN -4,99 Drogerie D =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... Schatullenkorrektur 20/08/17 =2,17-1,12 NaN NaN NaN Miete FFM 02/08/17 -450 NaN
15 G Backblaze Max 18/04/17 =-45,25/12 Gebühren G =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... Schatullenkorrektur 20/08/17 -1,05 NaN NaN NaN Ausgehen mit Kollegen 02/08/17 -20,6 NaN
16 G Backblaze Paul 18/04/17 =-3,77 Lebensmittel L =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... Geld abheben 22/08/17 40 NaN NaN NaN Real 02/08/17 -6,86 NaN
17 G Fitnessstudio 03/08/17 -39,8 Miscellaneous M =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... Wein 22/08/17 -10 NaN NaN NaN Fitnessstudio 03/08/17 -39,8 NaN
18 L Aldi 31/07/17 -23,97 regelm. Ausg. R =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... Tapas 23/08/17 -14 NaN NaN NaN Abheben 03/08/17 -30 NaN
19 R Monatskarte FFM 31/07/17 -87,4 Mensaessen AM =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... NaN NaN NaN NaN NaN NaN Kaufland 04/08/17 -13,95 NaN
20 L Netto 31/07/17 -9,44 Sachen S =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... NaN NaN NaN NaN NaN NaN McDonalds 05/08/17 -2,59 NaN
21 L Rewe 01/08/17 -8,71 Transport T =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... NaN NaN NaN NaN NaN NaN H&M 05/08/17 -55,08 NaN
22 D Rossmann 01/08/17 -9,17 NaN NaN NaN NaN NaN NaN NaN NaN NaN Rewe Wasser 05/08/17 -1,17 NaN
23 D DM 01/08/17 -9,45 Budgetierung NaN NaN NaN NaN NaN NaN NaN NaN Sommerticket DB 05/08/17 -96 NaN
24 D DM 01/08/17 -12,25 Essen NaN =300+R[-8]C[0] NaN NaN NaN NaN NaN NaN Sommerticket DB 05/08/17 -96 NaN
25 AM Mittagessen Casino 01/08/17 -2,8 Sonstiges NaN =150+R[-11]C[0]+R[-8]C[0]+R[-4]C[0] NaN NaN NaN NaN NaN NaN Edeka 05/08/17 -5,43 NaN
26 L Türkischer Supermarkt 01/08/17 -10,37 Sachen NaN =100+R[-6]C[0] NaN NaN NaN NaN NaN NaN Amazon Bestellung 06/08/17 -39,24 NaN
27 L Brot 01/08/17 =-0,95 Ausgehen NaN =70+R[-14]C[0] NaN NaN NaN NaN NaN NaN Sitzplatz reservierung 06/08/17 -4,5 NaN
28 AM Doppelter Kaffee Trianon 02/08/17 -1,5 Mensaessen NaN =60+R[-9]C[0] NaN NaN NaN NaN NaN NaN Rewe 07/08/17 -21 NaN
29 AM Kaffee 02/08/17 -0,7 NaN NaN NaN NaN NaN NaN NaN NaN NaN H&M Hose 07/08/17 -30,14 NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
71 A Wasser 13/08/17 -1,3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
72 AM Balisto 14/08/17 -0,5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
73 L Netto 14/08/17 -13,42 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
74 T Fahrkarte Frankfurt 14/08/17 -2,9 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
75 AM Mittagessen Casino 15/08/17 -4,3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
76 AM KitKat 15/08/17 -1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
77 L Rewe 16/08/17 -17,57 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
78 AM Kakao 16/08/17 -0,4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
79 L Real 18/08/17 -10,19 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
80 L Rewe 18/08/17 -2,69 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
81 AM Suppe 18/08/17 -0,6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
82 T Sitzplatz reservierung 18/08/17 -4,5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
83 A Eisessen 17/08/17 -1,2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
84 M Toilette 18/08/17 -0,25 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
85 S Spitzer 19/08/17 -2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
86 L Netto 19/08/17 -2,31 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
87 L Netto 19/08/17 -32,39 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
88 L Asia Markt 19/08/17 -7,12 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
89 D DM 19/08/17 -16,7 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90 D Apotheke 19/08/17 -27,42 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
91 AM Real 16/08/17 -3,42 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
92 A McDonalds Frühstück Köln 22/08/17 -2,99 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
93 L Penny 22/08/17 -2,57 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
94 L Penny Brötchen 23/08/17 -0,29 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
95 A Rewe 23/08/17 -2,18 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
96 T Einzelticket Köln 22/08/17 -2,8 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
97 A Wein 22/08/17 -10 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
98 A Tapas 23/08/17 -14 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
99 M Tree-App 20/08/17 -2,29 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
100 L Real 21/08/17 -5,17 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

101 rows × 17 columns


In [34]:
mytry = content.iloc[100].copy()
mytry[0] = 'A'
mytry[1] = 'Eis'
mytry[2] = '25/08/17'
mytry[3] = -1.2
display(mytry)

from numpy import NaN
content.loc[101] = mytry

display(content)


Realer Geldverbrauch                 A
Unnamed: 1                         Eis
Unnamed: 2                    25/08/17
=SUM(R[1]C[0]:R[95]C[0])          -1.2
Unnamed: 4                         NaN
Unnamed: 5                         NaN
Unnamed: 6                         NaN
Bargeld Max                        NaN
Unnamed: 8                         NaN
=SUM(R[1]C[0]:R[97]C[0])           NaN
Bargeld Paul                       NaN
Unnamed: 11                        NaN
=SUM(R[1]C[0]:R[97]C[0]).1         NaN
Konto Ing-DiBa                     NaN
Unnamed: 14                        NaN
=SUM(R[1]C[0]:R[95]C[0]).1         NaN
Unnamed: 16                        NaN
Name: 100, dtype: object
Realer Geldverbrauch Unnamed: 1 Unnamed: 2 =SUM(R[1]C[0]:R[95]C[0]) Unnamed: 4 Unnamed: 5 Unnamed: 6 Bargeld Max Unnamed: 8 =SUM(R[1]C[0]:R[97]C[0]) Bargeld Paul Unnamed: 11 =SUM(R[1]C[0]:R[97]C[0]).1 Konto Ing-DiBa Unnamed: 14 =SUM(R[1]C[0]:R[95]C[0]).1 Unnamed: 16
0 R Miete 01/08/17 -568 Haben Vermögen NaN =R[1]C[0]+R[2]C[0] Aktueller Stand NaN 47,2 Aktueller Stand NaN NaN Aktueller Stand NaN 405,74 NaN
1 R Miete FFM 02/08/17 -450 NaN Verfügung =R[-4]C[9]+R[-2]C[9]+R[-2]C[6]+R[-2]C[3]+R[-3]... Geld aufladen Mitarbeiter ausweis 01/08/17 -20 Geld aus Schatulle NaN =1 Budgetbeitrag von BMS 28/07/17 1468 NaN
2 R Berufsunfähigkeitsversicherung 01/08/17 -49,05 NaN Sparen =R[-4]C[9]+R[-6]C[9] Geld abheben 03/08/17 30 Brot 01/08/17 =-0,95 Aldi 31/07/17 -23,97 NaN
3 R Strom EnviaM NaN -51 NaN NaN NaN Geld aufladen Trianon 02/08/17 -20 Brot 08/08/17 -1,4 Monatskarte FFM 31/07/17 -87,4 NaN
4 R Vodafone NaN -19,99 Einnahmen NaN NaN Geld aus Schatulle 05/08/17 1,3 Geld aus Schatulle 08/08/17 1,35 Netto 31/07/17 -9,44 NaN
5 M Telefonie NaN -6 Budget-Einnahmen NaN NaN Betriebsausflug 07/08/17 -18,5 Geld abheben NaN 20 Haftpflichtversicherung 01/08/17 -7,5 NaN
6 R Rechtsschutzversicherung 30/01/17 -13,9 Sondereinnahmen NaN NaN Geldfund 12/08/17 0,05 PUCK aufladen NaN -20 Berufsunfähigkeitsversicherung 01/08/17 -49,05 NaN
7 R Haftpflichtversicherung 01/08/17 -7,5 Realvermögenszuwachs (1 Mo) NaN =R[-7]C[0]-Juli!R[-7]C[0] Eisessen 13/08/17 -4,8 Geld abheben 21/08/17 20 Miete 01/08/17 -568 NaN
8 G GEW NaN -2,5 Realvermögenszuwachs (3 Mo) NaN =R[-8]C[0]-'Mai+Juni'!R[-8]C[0] Wasser 13/08/17 -1,3 NaN NaN NaN Rewe 01/08/17 -8,71 NaN
9 R Semestergebühr Paul 21/06/16 =-276,91/6 NaN NaN BBk Karte Aufladen 14/08/17 -10 NaN NaN NaN Rossmann 01/08/17 -9,17 NaN
10 R GEZ 31/03/17 -17,5 Ausgaben NaN NaN Eisessen 17/08/17 -1,2 NaN NaN NaN DM 01/08/17 -9,45 NaN
11 R Handy Max 10/08/17 -7,99 Real NaN =R[-12]C[-3] Toilette 18/08/17 -0,25 NaN NaN NaN DM 01/08/17 -12,25 NaN
12 R Handy Paul 10/08/17 -7,99 NaN NaN NaN Spitzer 19/08/17 -2 NaN NaN NaN Türkischer Supermarkt 01/08/17 -10,37 NaN
13 G Spotify Max 15/08/17 -4,99 Ausgehen A =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... Geld aus Schatulle 20/08/17 0,5 NaN NaN NaN Miete FFM auf Max Konto 02/08/17 450 NaN
14 G Apple Music Paul NaN -4,99 Drogerie D =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... Schatullenkorrektur 20/08/17 =2,17-1,12 NaN NaN NaN Miete FFM 02/08/17 -450 NaN
15 G Backblaze Max 18/04/17 =-45,25/12 Gebühren G =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... Schatullenkorrektur 20/08/17 -1,05 NaN NaN NaN Ausgehen mit Kollegen 02/08/17 -20,6 NaN
16 G Backblaze Paul 18/04/17 =-3,77 Lebensmittel L =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... Geld abheben 22/08/17 40 NaN NaN NaN Real 02/08/17 -6,86 NaN
17 G Fitnessstudio 03/08/17 -39,8 Miscellaneous M =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... Wein 22/08/17 -10 NaN NaN NaN Fitnessstudio 03/08/17 -39,8 NaN
18 L Aldi 31/07/17 -23,97 regelm. Ausg. R =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... Tapas 23/08/17 -14 NaN NaN NaN Abheben 03/08/17 -30 NaN
19 R Monatskarte FFM 31/07/17 -87,4 Mensaessen AM =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... NaN NaN NaN NaN NaN NaN Kaufland 04/08/17 -13,95 NaN
20 L Netto 31/07/17 -9,44 Sachen S =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... NaN NaN NaN NaN NaN NaN McDonalds 05/08/17 -2,59 NaN
21 L Rewe 01/08/17 -8,71 Transport T =SUMIF(R6C[-6]:R130C[-6];"="&R[0]C[-1];R6C[-3]... NaN NaN NaN NaN NaN NaN H&M 05/08/17 -55,08 NaN
22 D Rossmann 01/08/17 -9,17 NaN NaN NaN NaN NaN NaN NaN NaN NaN Rewe Wasser 05/08/17 -1,17 NaN
23 D DM 01/08/17 -9,45 Budgetierung NaN NaN NaN NaN NaN NaN NaN NaN Sommerticket DB 05/08/17 -96 NaN
24 D DM 01/08/17 -12,25 Essen NaN =300+R[-8]C[0] NaN NaN NaN NaN NaN NaN Sommerticket DB 05/08/17 -96 NaN
25 AM Mittagessen Casino 01/08/17 -2,8 Sonstiges NaN =150+R[-11]C[0]+R[-8]C[0]+R[-4]C[0] NaN NaN NaN NaN NaN NaN Edeka 05/08/17 -5,43 NaN
26 L Türkischer Supermarkt 01/08/17 -10,37 Sachen NaN =100+R[-6]C[0] NaN NaN NaN NaN NaN NaN Amazon Bestellung 06/08/17 -39,24 NaN
27 L Brot 01/08/17 =-0,95 Ausgehen NaN =70+R[-14]C[0] NaN NaN NaN NaN NaN NaN Sitzplatz reservierung 06/08/17 -4,5 NaN
28 AM Doppelter Kaffee Trianon 02/08/17 -1,5 Mensaessen NaN =60+R[-9]C[0] NaN NaN NaN NaN NaN NaN Rewe 07/08/17 -21 NaN
29 AM Kaffee 02/08/17 -0,7 NaN NaN NaN NaN NaN NaN NaN NaN NaN H&M Hose 07/08/17 -30,14 NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
72 AM Balisto 14/08/17 -0,5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
73 L Netto 14/08/17 -13,42 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
74 T Fahrkarte Frankfurt 14/08/17 -2,9 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
75 AM Mittagessen Casino 15/08/17 -4,3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
76 AM KitKat 15/08/17 -1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
77 L Rewe 16/08/17 -17,57 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
78 AM Kakao 16/08/17 -0,4 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
79 L Real 18/08/17 -10,19 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
80 L Rewe 18/08/17 -2,69 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
81 AM Suppe 18/08/17 -0,6 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
82 T Sitzplatz reservierung 18/08/17 -4,5 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
83 A Eisessen 17/08/17 -1,2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
84 M Toilette 18/08/17 -0,25 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
85 S Spitzer 19/08/17 -2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
86 L Netto 19/08/17 -2,31 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
87 L Netto 19/08/17 -32,39 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
88 L Asia Markt 19/08/17 -7,12 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
89 D DM 19/08/17 -16,7 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
90 D Apotheke 19/08/17 -27,42 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
91 AM Real 16/08/17 -3,42 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
92 A McDonalds Frühstück Köln 22/08/17 -2,99 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
93 L Penny 22/08/17 -2,57 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
94 L Penny Brötchen 23/08/17 -0,29 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
95 A Rewe 23/08/17 -2,18 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
96 T Einzelticket Köln 22/08/17 -2,8 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
97 A Wein 22/08/17 -10 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
98 A Tapas 23/08/17 -14 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
99 M Tree-App 20/08/17 -2,29 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
100 L Real 21/08/17 -5,17 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
101 A Eis 25/08/17 -1.2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

102 rows × 17 columns


In [35]:
new_sheet = connect_to_sheets(workbook, 'new_August')

set_with_dataframe(new_sheet, content)


---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)
/usr/local/lib/python3.6/site-packages/gspread/models.py in worksheet(self, title)
    186         try:
--> 187             return finditem(lambda x: x.title == title, self._sheet_list)
    188         except StopIteration:

/usr/local/lib/python3.6/site-packages/gspread/utils.py in finditem(func, seq)
     26     """
---> 27     return next((item for item in seq if func(item)))
     28 

StopIteration: 

During handling of the above exception, another exception occurred:

WorksheetNotFound                         Traceback (most recent call last)
<ipython-input-35-d889bfff9103> in <module>()
      1 
----> 2 new_sheet = connect_to_sheets(workbook, 'new_August')
      3 
      4 set_with_dataframe(new_sheet, content)

<ipython-input-2-a7515592bc2b> in connect_to_sheets(spreadsheet, sheetname)
     12         return spreadsheet
     13     else :
---> 14         worksheet = spreadsheet.worksheet(sheetname)
     15         return worksheet

/usr/local/lib/python3.6/site-packages/gspread/models.py in worksheet(self, title)
    187             return finditem(lambda x: x.title == title, self._sheet_list)
    188         except StopIteration:
--> 189             raise WorksheetNotFound(title)
    190 
    191     def get_worksheet(self, index):

WorksheetNotFound: new_August

In [37]:
sheet.update_acell('A107', 'A')
sheet.update_acell('B107', 'Eis')
sheet.update_acell('C107', '25/08/17')
sheet.update_acell('D107', -1.2)

In [38]:
sheet.update_acell('D107', '-1,20 €')

In [43]:
first_col = sheet.col_values(1)

In [50]:
print(first_col.index('', 5)) 
## note python list is counted by 0, the excel counting starts at 1, i.e. the result 107 means that row 108 is 
## the first one thats empty
first_col[107]


107
Out[50]:
''

In [ ]: