返回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