Apply and Values
Apply a Function to a Column
Transform each value in a column by applying a formula element-by-element —
here, rounding each price to the nearest ten. With pandas, Series.apply
calls the function once per element and collects the results.
By hand
With pandas
df['price'].apply(lambda x: round(x / 10) * 10) returns a new Series with
the transformed values. The index and dtype are preserved.
naive.py
prices = [14, 27, 33, 56]
result = []
for p in prices:
scaled = round(p / 10) * 10
result.append(scaled)
print('RESULT:', result)
library.py
import pandas as pd
from dalib.display import set_display
set_display()
prices = [14, 27, 33, 56]
df = pd.DataFrame({'price': prices})
result = df['price'].apply(lambda x: round(x / 10) * 10)
print('index:', result.index.tolist())
print('values:', result.tolist())
print('dtype:', result.dtype)
print('RESULT:', result.tolist())
index: [0, 1, 2, 3]
values: [10, 30, 30, 60]
dtype: int64
RESULT: [10, 30, 30, 60]
Implementation notes
Series.applyis an elementwise API — it calls the Python function once per element, not as a vectorized kernel. For simple arithmetic, prefer a vectorized expression:df['price'] * 2is faster thandf['price'].apply(lambda x: x * 2)because it avoids per-element Python calls.- Use
.applywhen the transformation cannot be expressed as built-in vectorized operations — e.g. multi-step logic or calls to external functions. - Cross-reference:
map-transform(python-data-basics) for the pure-Python version;map-values(this chapter) for dict-based remapping viaSeries.map.