Kiedy robisz rzeczy standardowe, korzystasz sobie ze standardowych metod, ale kiedy przychodzi zmierzyć się z niestandardowym problemem, to trzeba sięgnąć po funkcję apply. Tutaj mamy dosyć nietypowy DataFrame. Dla każdego wiersza DataFrame trzeba wykonać jakąś niestandardową czynność…
|
import pandas as pd df = pd.DataFrame( [ [-1, -1], [[11,12], [21, 22]], [-1,-1], [[101,102],[201,202]] ], columns=['rola','X_dist']) df |
|
rola X_dist 0 -1 -1 1 [11, 12] [21, 22] 2 -1 -1 3 [101, 102] [201, 202] |
Dajmy na to, że w zależności od zawartości kolumny „rola” trzeba zwrócić taki albo inny DataFrame […]
Odpowiadając krótko – wtedy kiedy chcesz mieć pewność że jakieś instrukcje wykonają się NA PEWNO i ZAWSZE. Nawet w bardzo dziwnych i nietypowych sytuacjach. Zazwyczaj np. uważamy, że kod w funkcji po słowie return się nie wykona:
|
def DoSomething(a,b): c=a+b return c c=3+3 return c DoSomething(1,1) |
i rzeczywiście tak jest:
Ale kiedy popatrzysz na taki zwariowany kod:
|
def TestTryCatchFinally(a,b): try: print('starting TRY') c = a / b print('ending TRY') return c except: print('starting EXCEPT') c = b / a print('ending EXCEPT') return -1 finally: print('starting FINALLY') c = 9 return c print('ending FINALLY') |
i wywołasz go tak: […]
Programista bez debuggera, to jak mechanik bez klucza… to trzeba mieć! Ostatnio bardzo popularnym narzędziem do tworzenia skryptów w Pythonie jest Jupyter Notebook. Niestety domyślnie menu nie ma polecenia debug… o ile w pojedynczych komórkach po prostu wykonujesz mało skomplikowane polecenia, to ewentualne dodanie polecenia print powinno pomóc i rozwiązać problem. Co jednak zrobić jeżeli […]