Почему я не могу использовать функцию groupby для вычисления среднего значения другого столбца здесь? - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь найти средний CTR для набора электронных писем, которые я хотел бы классифицировать по времени их отправки, чтобы определить, зависит ли CTR от времени их отправки. Но по какой-то причине панды просто не хотят, чтобы я нашел среднее значение CTR.

Как вы увидите ниже, я пытался использовать функцию среднего значения, чтобы найти среднее значение CTR для каждого времени, но постоянно получаю сообщение об ошибке:

DataError: No numeric types to aggregate

Для меня это означало бы, что мои цифры CTR не являются целыми числами или числами с плавающей запятой, а являются строками. Однако, несмотря на то, что они пришли в виде строк, я уже преобразовал их в поплавки. Я тоже это знаю, потому что если я использую функцию sum () вместо усредненной функции, она работает просто отлично.

Строка кода очень проста:

df.groupby("TIME SENT", as_index=False)['CTR'].mean()

Я не могу себе представить, почему функция суммы сработала бы, а функция среднего не сработала, особенно если ошибка описана выше. У кого-нибудь есть идеи?

РЕДАКТИРОВАТЬ: код, который я использовал, чтобы превратить столбец CTR от процентной доли строки (85,8%), чтобы плавать:

i = 0

for index, row in df.iterrows():
    df.loc[i, "CTR"] = float(row['CTR'].strip('%'))/100
    i += 1

Ссылка на df.head (): https://ethercalc.org/zw6xmf2c7auw

1 Ответ

0 голосов
/ 10 мая 2019
df['CTR']= (df['CTR'].str.strip('%').astype('float'))/100

Приведенный выше код удаляет% из столбца CTR, а затем меняет его тип на float. Затем вы можете выполнить групповую операцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...