Я использую следующую функцию в течение нескольких лет. И он работает нормально:
function timeDifference($timestamp)
{
$otherDate=$timestamp;
$now=@date("Y-m-d H:i:s");
$secondDifference=@strtotime($now)-@strtotime($otherDate);
$extra="";
if ($secondDifference == 2592000) {
// months
$difference = $secondDifference/2592000;
$difference = round($difference,0);
if ($difference>1) { $extra="s"; }
$difference = $difference." month".$extra." ago";
}else if($secondDifference > 2592000)
{$difference=timestamp($timestamp);}
elseif ($secondDifference >= 604800) {
// weeks
$difference = $secondDifference/604800;
$difference = round($difference,0);
if ($difference>1) { $extra="s"; }
$difference = $difference." week".$extra." ago";
}
elseif ($secondDifference >= 86400) {
// days
$difference = $secondDifference/86400;
$difference = round($difference,0);
if ($difference>1) { $extra="s"; }
$difference = $difference." day".$extra." ago";
}
elseif ($secondDifference >= 3600) {
// hours
$difference = $secondDifference/3600;
$difference = round($difference,0);
if ($difference>1) { $extra="s"; }
$difference = $difference." hour".$extra." ago";
}
elseif ($secondDifference < 3600) {
// hours
// for seconds (less than minute)
if($secondDifference<=60)
{
if($secondDifference==0)
{
$secondDifference=1;
}
if ($secondDifference>1) { $extra="s"; }
$difference = $secondDifference." second".$extra." ago";
}
else
{
$difference = $secondDifference/60;
if ($difference>1) { $extra="s"; }else{$extra="";}
$difference = round($difference,0);
$difference = $difference." minute".$extra." ago";
}
}
$FinalDifference = $difference;
return $FinalDifference;
}
TL; DR : Чтобы получить желаемый результат, вы можете просто сделать print(np.mean(df['purchase_amount'] ** 2))
Series.aggregate
документы говорят:
func: function, str, list или dict Функция, используемая для агрегирования данных. Если функция, то должна работать либо при передаче Series , либо при передаче в Series.apply .
blockquote> Когда у вас есть len(x)
, оно вызывает исключение, когда m
вызывается впервые (потому что x
является float, а объекты с плавающей точкой не имеют len
). Это исключение вызывает откат панд и повторный вызов m
, на этот раз передавая его apply
(как задокументировано).
Если мы исследуем Series.aggregate
источник, мы можем увидеть это поведение:
...
result = None
if axis == 0:
try:
result, how = self._aggregate(func, axis=0, *args, **kwargs)
except TypeError:
pass
if result is None:
return self.apply(func, axis=axis, args=args, **kwargs)
return result