Python 如何使用for循环在字典中存储首次使用日期
我有一个userid的数据集,它们在使用某个特定过程的所有时候都会使用。我需要知道他们每个人第一次使用通行证已经有多少天了。我正在考虑运行数据集,将第一次使用的数据存储在字典中,并减去今天的日期。我似乎无法让它工作 用户ID开始使用日期Python 如何使用for循环在字典中存储首次使用日期,python,pandas,datetime,Python,Pandas,Datetime,我有一个userid的数据集,它们在使用某个特定过程的所有时候都会使用。我需要知道他们每个人第一次使用通行证已经有多少天了。我正在考虑运行数据集,将第一次使用的数据存储在字典中,并减去今天的日期。我似乎无法让它工作 用户ID开始使用日期 1712 2019-01-04星期五 1712 2019-01-05星期六 9050 2019-01-04星期五 9050 2019-01-04星期五 9050 2019-01-06星期日 9409 2019-01-05星期六 9683 2019-05-20星期
1712 2019-01-04星期五
1712 2019-01-05星期六
9050 2019-01-04星期五
9050 2019-01-04星期五
9050 2019-01-06星期日
9409 2019-01-05星期六
9683 2019-05-20星期一
8800 2019-05-17星期五
8800 2019-05-17星期五 这是数据集的一部分。日期格式为Y-m-d
usedict={}
keys = df.user_id
values = df.start_date
for i in keys:
if (usedict[i] == keys):
continue
else:
usedict[i] = values[i]
prints(usedict)
用户\u id使用\u计数天数\u使用的平均每日行程登记\u日期天数\u自\u reg12 42 23 1.826087 NaT NaT NaT
1728132.153846纳特纳特
114 54 24 2.250000 2019-02-04 107天
169 31 17 1.823529纳特纳特
1414 49 20 2.45万纳特纳特
171276342.235294 NaT NaT NaT
2388241220万纳特纳特
6150 10 5 2.000000 2019-02-05 106天我只查看了两列,但您可以使用groupby找到每个id的最小值,然后使用apply获得差异(我已在天内完成差异) 参考文献: to_dict()方法取自
输出:
我只查看了两列,但您可以使用groupby找到每个id的最小值,然后使用apply获得差异(我在几天内完成了差异) 参考文献: to_dict()方法取自
输出:
您可以通过以下方法实现您想要的。在您给出的示例中,我只使用了2个用户ID,但这同样适用于所有用户
import pandas as pd
import datetime
df = pd.DataFrame([{'Userid':'1712','use_date':'2019-01-04'},
{'Userid':'1712','use_date':'2019-01-05'},
{'Userid':'9050','use_date':'2019-01-04'},
{'Userid':'9050','use_date':'2019-01-04'},
{'Userid':'9050','use_date':'2019-01-06'}])
df.use_date = pd.to_datetime(df.use_date).dt.date
group_df = df.sort_values(by='use_date').groupby('Userid', as_index=False).agg({'use_date':'first'}).rename(columns={'use_date':'first_use_date'})
group_df['diff_from_today'] = datetime.datetime.today().date() - group_df.first_use_date
输出为:
print(group_df)
Userid first_use_date diff_from_today
0 1712 2019-01-04 139 days
1 9050 2019-01-04 139 days
查看和以了解更多详细信息。您可以通过以下操作实现所需。在您给出的示例中,我只使用了2个用户ID,但这同样适用于所有用户
import pandas as pd
import datetime
df = pd.DataFrame([{'Userid':'1712','use_date':'2019-01-04'},
{'Userid':'1712','use_date':'2019-01-05'},
{'Userid':'9050','use_date':'2019-01-04'},
{'Userid':'9050','use_date':'2019-01-04'},
{'Userid':'9050','use_date':'2019-01-06'}])
df.use_date = pd.to_datetime(df.use_date).dt.date
group_df = df.sort_values(by='use_date').groupby('Userid', as_index=False).agg({'use_date':'first'}).rename(columns={'use_date':'first_use_date'})
group_df['diff_from_today'] = datetime.datetime.today().date() - group_df.first_use_date
输出为:
print(group_df)
Userid first_use_date diff_from_today
0 1712 2019-01-04 139 days
1 9050 2019-01-04 139 days
查看和以了解更多详细信息。查找每个id的最小开始时间?1。您的else分支中似乎存在缩进问题。2.通过添加一个条件检查,您可以为
usedict
中的每个键(userid)分配值(日期-时间),检查最早的日期是否与冒泡排序的作用相同找到每个id的最小开始日期?1。您的else分支中似乎存在缩进问题。2.您可以通过添加一个条件检查来为usedict
中的每个键(userid)分配值(日期-时间),检查是否是最早的日期,就像气泡排序一样