我正在使用时间序列数据来总结用户对产品的使用情况(每个用户是一列,每个日期是一行)。我试图总结使用该产品的用户所占的百分比,这要求他们每天使用一定时间。
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
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
我已根据字词回答了您的问题。但是我的答案与您的百分比答案不符。所以我误会了,或者您正在使用虚拟变量。
首先将索引设置为日期。
df = df.set_index('date')
然后过滤数据框以获取大于50的值并跨列求和(轴= 1),然后除以列数。
df['percent_of_adoption'] = (df > 50).sum(axis = 1).div(df.count(axis = 1)) * 100