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!

questionAnswers(3)

yourAnswerToTheQuestion