Если использовать Series.apply
, то цикл выполняется по каждому значению столбца. Ошибка означает, что для скаляров нет min
и max
.
df = pd.DataFrame({
'tmk':[4,5,4,5,5,np.nan],
})
def min_max(x):
minimum = x.min()
maximum = x.max()
print(f'Min: {minimum} | Max: {maximum}')
Необходимо обработать все значения столбца с помощью Series.pipe
:
df["tmk"].pipe(min_max)
Или передайте Series для работы, как упомянуто @AkshayNevrekar в комментариях:
min_max(df["tmk"])
Другая идея заключается в использовании DataFrame.apply
- добавлено []
для одного столбца DataFrame
:
df[["tmk"]].apply(min_max)
Min: 4.0 | Max: 5.0
Другой метод - это использование Series.describe
или Series.agg
:
print (df['tmk'].describe())
count 5.000000
mean 4.600000
std 0.547723
min 4.000000
25% 4.000000
50% 5.000000
75% 5.000000
max 5.000000
Name: tmk, dtype: float64
print (df['tmk'].agg(['min', 'max']))
min 4.0
max 5.0
Name: tmk, dtype: float64
Также возможно добавить format
какупомянул @Jon Clements, спасибо:
print ('Min: {min} | Max: {max}'.format_map(df['tmk'].agg(['min', 'max'])))
Min: 4.0 | Max: 5.0