返回false 说明你这个'2020-06-01'写法并不是真实数据的样子,这是字符串,而你数据里面应该是日期,所以不相等。
wangxishi
2020-10-10
data['日期']=='2020-06-01'这句有问题吧,你可以单独执行这句看看返回的布尔值是啥样。你应该用聚合函数来计算吧?目前会查看帮助文档了吗?
wangxishi
2020-10-10
这是extract方法是pandas用来对数据做正则处理的接口,通过编写正则表达式可以提取自己想要的数据。
r'([0-9]*)'这个正则表达式的语法目的是匹配第一次出现的纯数字,其中[0-9]代表任一数字 *代表前面的内容出现0次或多次。
至于这个语法是如何写出的:
1、需要看一下正则表达式的基本语法
2、观察数据存在的规律。。
wangxishi
2020-10-10
具体实现代码参考如下:
# 导入数据
import pandas as pd
df = pd.read_excel("1602230751_681754.xlsx",usecols=range(6),index_col=0)
# 将数据提取转换为整型并添加到"start"列
df["start"] = df["区间"].str.extract(r"([0-9]*)").astype(int)
# 依据日期、start 两列分别排序
df.sort_values(["日期","start"])
wangxishi
2020-10-09
1、dataframe中可以使用sort_values方法对各个列进行排序
如下的文档:
df.sort_values(
by,
axis=0,
ascending=True,
inplace=False,
kind='quicksort',
na_position='last',
ignore_index=False,
)
其中by为排序依据,可以赋值为列表。本题目中先按照日期后按照区间可以这样写
df.sort_values(["日期","区间"])
2、但是区间是字符串类型的,不易区分数值大小,所以需要先使用字符串生成新列,比如10000-50000 可以转换为数字10000,根据转换后的结果列进行排序就正确了。
wangxishi
2020-10-09
import pprint def get_max_date(user_id, login_date): """基于双指针的算法实现用户连续登录天数""" n = len(login_date) if len(login_date) == 1: return 1 max_day = 0 cur_day = 1 for i in range(n - 1): d1 = datetime.strptime(login_date[i], "%Y-%m-%d") d2 = datetime.strptime(login_date[i + 1], "%Y-%m-%d") if (d2 - d1).days == 1: cur_day += 1 elif (d2 - d1).days > 1: cur_day = 0 max_day = max(cur_day, max_day) return max_day # 1. 读取数据信息 from datetime import datetime users = {} # 字典存储用户信息, {user_id:login_date} with open('C:\\Users\\Administrator\\Desktop\\用户连续登录天数\\用户连续登录天数\\user_login.txt') as f: for line in f: user_id, login_date = line.strip().split('\t') login_date = login_date.strip("'") if user_id not in users: users[user_id] = [login_date] else: users[user_id].append(login_date) pprint.pprint(users) # 2. 加载数据信息 for user_id, login_date in users.items(): max_day = get_max_date(user_id, login_date) print("%s的最长连续登录天数为%s" % (user_id, max_day))
ermutuxia
2020-10-01
问题解决了 更新数据源还是不行 我修改的M函数的代码 就可以了 谢谢各位的帮忙
ermutuxia
2020-09-29
windows 也是可以的,windows有”任务计划程序“,通过这个程序可以安排启动程序的周期。
代码手头没有现成的,如果有具体需求可以发详细的需求来做。
wangxishi
2020-09-29
我记得办公自动化里面有发邮件的课程,你申请一下。
http://www.peixun.net/view/1692.html
wangxishi
2020-09-29