Создайте новый столбец, который подсчитывает, сколько записей в строке удовлетворяет условию для каждой строки фрейма данных в пандах. - PullRequest
0 голосов
/ 13 мая 2019

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

date          user1         user2           user3              user4
2017-06-23    120.000000    200.000000      20.000000          0.000000   
2017-06-24    201.000000    195.000000      10.000000          0.000000   
2017-06-25    267.333333    190.000000      56.666667          0.000000   
2017-06-26    255.500000    142.500000      42.500000          0.000000   
2017-06-27    269.200000    131.800000      45.600000          0.000000   
2017-06-28    241.500000    138.333333      49.500000          0.000000   
2017-06-29    224.000000    118.571429      61.000000          0.000000  

Я пытаюсь подсчитать, сколько раз условие выполняется для каждой записи в строке, и создать новый столбец, который считает это и делится на общее количество пользователей * 100. Я пробовал:

df['Percent of Adoption'] = (df[df.columns > 50].count(axis=0)/len(df.columns))*100

Это приводит к следующей ошибке:

TypeError: '>' not supported between instances of 'str' and 'int'

Желаемый вывод:

date          user1         user2           user3              user4//     
2017-06-23    120.000000    200.000000      20.000000          0.000000   
2017-06-24    201.000000    195.000000      10.000000          0.000000   
2017-06-25    267.333333    190.000000      56.666667          0.000000   
2017-06-26    255.500000    142.500000      42.500000          0.000000   
2017-06-27    269.200000    131.800000      45.600000          0.000000   
2017-06-28    241.500000    138.333333      49.500000          0.000000   
2017-06-29    224.000000    118.571429      61.000000          0.000000 

Percent of Adoption
50.0
50.0
75.0
50.0
50.0
50.0
75.0

Любая помощь будет высоко ценится. Спасибо!

1 Ответ

0 голосов
/ 14 мая 2019

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

Сначала установите индекс на дату.

df = df.set_index('date')

Затем отфильтруйте фрейм данных по значениям больше 50 и суммируйте по столбцам (ось = 1), затем разделите на количество столбцов.

df['percent_of_adoption'] = (df > 50).sum(axis = 1).div(df.count(axis = 1)) * 100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...