Chociaż podane odpowiedzi są poprawne, modyfikują one początkową ramkę danych, co nie zawsze jest pożądane (a biorąc pod uwagę, że OP poprosił o przykłady „za pomocą apply
”, może być tak, że chcieli wersji, która zwraca nową ramkę danych, jak to apply
ma miejsce).
Jest to możliwe przy użyciu assign
: dotyczy assign
istniejących kolumn, jak stwierdzono w dokumentacji (nacisk jest mój):
Przypisz nowe kolumny do DataFrame.
Zwraca nowy obiekt ze wszystkimi oryginalnymi kolumnami oprócz nowych. Istniejące kolumny, które zostaną ponownie przypisane, zostaną zastąpione .
W skrócie:
In [1]: import pandas as pd
In [2]: df = pd.DataFrame([{'a': 15, 'b': 15, 'c': 5}, {'a': 20, 'b': 10, 'c': 7}, {'a': 25, 'b': 30, 'c': 9}])
In [3]: df.assign(a=lambda df: df.a / 2)
Out[3]:
a b c
0 7.5 15 5
1 10.0 10 7
2 12.5 30 9
In [4]: df
Out[4]:
a b c
0 15 15 5
1 20 10 7
2 25 30 9
Zauważ, że funkcja przejdzie całą ramkę danych, nie tylko kolumnę, którą chcesz zmodyfikować, więc musisz upewnić się, że wybierasz odpowiednią kolumnę w lambda.