当前位置:   article > 正文

牛客网连续练习题目3天及以上的用户

牛客网连续练习题目3天及以上的用户

题目描述:

现有牛客网12月每天练习题目的数据集nowcoder.csv。包含如下字段(字段之间用逗号分隔):

  • user_id:用户id
  • question_id:问题编号
  • result:运行结果
  • date:练习日期

请你统计2021年12月连续练习题目3天及以上的所有用户。

输入描述:

数据集可以直接从当前目录下nowcoder.csv读取。

输出描述:

输出连续3天及以上的用户及对应的连续天数,以上数据集的输出结果如下:

alt

解答:

  1. import sys
  2. for line in sys.stdin:
  3. a = line.split()
  4. print(int(a[0]) + int(a[1]))
  5. import pandas as pd
  6. nowcoder=pd.read_csv('nowcoder.csv')
  7. # 去重
  8. nowcoder.date=pd.to_datetime(nowcoder.date).dt.date
  9. nowcoder=nowcoder.drop_duplicates(['user_id','date'])[['user_id','date']]
  10. # 排名,然后转化为日期
  11. nowcoder['rk']=pd.to_datetime(nowcoder.groupby(['user_id'])['date'].rank(),unit='d').dt.date
  12. # 将日期与排名相减,如果是连续的,得到的差是相同的
  13. nowcoder['diff']=nowcoder.date-nowcoder.rk
  14. # 用用户id和差做分组然后计数,这个计数代表连续天数
  15. res=nowcoder.groupby(['user_id','diff'])['date'].count()
  16. # 筛选超过3的
  17. print(res[res>=3].reset_index('diff',drop=True))

注意:

  • 这里的unit='d'参数表示排名被解释为以天为单位的时间戳。

Pandaspd.to_datetime()函数中,unit参数用于指定时间戳的单位。以下是一些可用的选项:

  • 'd':天
  • 'h':小时
  • 'm':分钟
  • 's':秒
  • 'ms':毫秒
  • 'us':微秒
  • 'ns':纳秒

  • drop=True

.reset_index('newrank', drop=True)会重置索引。'newrank'是要被重置的索引的名字,drop=True表示在重置索引后,原来的索引将被丢弃,而不是被添加到数据框的列中。

所以,这行代码的结果是,你会看到一个新的数据框(或者序列),其中包含了res中大于或等于3的元素,索引被重置为默认的整数索引,从0开始。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/204794?site
推荐阅读
相关标签
  

闽ICP备14008679号