Mam dataframe pandy o następującej strukturze:Warunkowe kolumna arytmetyka w Pandy dataframe
import numpy as np
import pandas as pd
myData = pd.DataFrame({'x': [1.2,2.4,5.3,2.3,4.1], 'y': [6.7,7.5,8.1,5.3,8.3], 'condition':[1,1,np.nan,np.nan,1],'calculation': [np.nan]*5})
print myData
calculation condition x y
0 NaN 1 1.2 6.7
1 NaN 1 2.4 7.5
2 NaN NaN 5.3 8.1
3 NaN NaN 2.3 5.3
4 NaN 1 4.1 8.3
chcę wprowadzić wartość w „obliczania” kolumny na podstawie wartości w „x” i „y” . (na przykład x/Y), ale jedynie w komórkach, w których określenia 'stan' kolumna zawiera NaN (np.isnan (Mydata [ 'stan']) ostateczny dataframe powinien wyglądać tak jak poniżej:
calculation condition x y
0 NaN 1 1.2 6.7
1 NaN 1 2.4 7.5
2 0.654 NaN 5.3 8.1
3 0.434 NaN 2.3 5.3
4 NaN 1 4.1 8.3
ja zadowolony z pomysłu przechodzenia przez każdy wiersz z kolei za pomocą pętli "for", a następnie za pomocą instrukcji "if" do obliczeń s ale faktyczna ramka danych, którą mam jest bardzo duża i chciałem wykonać obliczenia w sposób oparty na tablicy. czy to możliwe? Sądzę, że mógłbym obliczyć wartość dla wszystkich wierszy, a następnie usunąć te, których nie chcę, ale wydaje się, że jest to dużo zmarnowanego wysiłku (NaNy są dość rzadkie w ramce danych) i, w niektórych przypadkach, gdy "warunek" jest równy 1 , obliczenia nie można dokonać z powodu dzielenia przez zero.
Z góry dziękuję.
Perfect! Dziękuję Ci. – user1718097