Dlaczego ta funkcja nie „bierze” po tym, jak wykrywam ramkę DataFrame?
Posiadam ramkę DataFrame ze znacznikami temperatury i prędkości wiatru ze znacznikami czasowymi oraz funkcję przekształcania ich w „chłód wiatru”. Używam iterrows, aby uruchomić funkcję w każdym wierszu i mam nadzieję, że uda mi się uzyskać DataFrame za pomocą fajnej kolumny „Wind Chill”.
Jednakże, chociaż wydaje się, że działa tak, jak przechodzi, i faktycznie „zadziałał” przynajmniej raz, nie wydaje mi się, aby powtarzało się to konsekwentnie. Czuję, że brakuje mi ogólnie struktury DataFrames, ale mam nadzieję, że ktoś może pomóc.
In [28]: bigdf.head()
Out[28]:
Day Temperature Wind Speed Year
2003-03-01 06:00:00-05:00 1 30.27 5.27 2003
2003-03-01 07:00:00-05:00 1 30.21 4.83 2003
2003-03-01 08:00:00-05:00 1 31.81 6.09 2003
2003-03-01 09:00:00-05:00 1 34.04 6.61 2003
2003-03-01 10:00:00-05:00 1 35.31 6.97 2003
Dodałem więc kolumnę „Chłód wiatru” dobigdf
i wstępnie wypełnijNaN
.
In [29]: bigdf['Wind Chill'] = NaN
Następnie staram się iterować po rzędach, aby dodać rzeczywiste Wiatry.
In [30]: for row_index, row in bigdf[:5].iterrows():
...: row['Wind Chill'] = windchill(row['Temperature'], row['Wind Speed'])
...: print row['Wind Chill']
...:
24.7945889994
25.1365267133
25.934114012
28.2194307516
29.5051046953
Jak możesz powiedzieć, nowe wartościzjawić się do zastosowania w kolumnie „Chłodzenie wiatru”. Tutaj jestwindchill
funkcja, na wszelki wypadek, która pomaga:
def windchill(temp, wind):
if temp>50 or wind<=3:
return temp
else:
return 35.74 + 0.6215*temp - 35.75*wind**0.16 + 0.4275*temp*wind**0.16
Ale kiedy ponownie spojrzę na DataFrame, NaN's nadal tam są:
In [31]: bigdf.head()
Out[31]:
Day Temperature Wind Speed Year Wind Chill
2003-03-01 06:00:00-05:00 1 30.27 5.27 2003 NaN
2003-03-01 07:00:00-05:00 1 30.21 4.83 2003 NaN
2003-03-01 08:00:00-05:00 1 31.81 6.09 2003 NaN
2003-03-01 09:00:00-05:00 1 34.04 6.61 2003 NaN
2003-03-01 10:00:00-05:00 1 35.31 6.97 2003 NaN
Co jeszcze dziwniejsze, to toma pracował raz lub dwa razy i nie mogę powiedzieć, co zrobiłem inaczej.
Muszę przyznać, że nie jestem szczególnie zaznajomiony z wewnętrznym działaniem pand i mylę się z indeksowaniem itp., Więc czuję, że prawdopodobnie brakuje mi tutaj czegoś bardzo podstawowego (lub robię to w trudny sposób).
Dzięki!