Here is the code. I would think the results will be ordered in desc by lastlogin_str column, but they are not.
import pandas as pd
import time
tbl = []
users = gis.users.search("*",sort_field="lastLogin",sort_order="desc",max_users=500)
for user in users:
grps = ""
for grp in user.groups:
try:
grps += grp.title + ","
except:
print("\n")
grps = grps[:-1]
created_str = time.strftime('%Y-%m-%d', time.gmtime(user.created/1000.0))
modified_str = time.strftime('%Y-%m-%d', time.gmtime(user.modified/1000.0))
lastlogin_str = time.strftime('%Y-%m-%d', time.gmtime(user.lastLogin/1000.0))
num_items = 0
#root items
#print("Items under root:")
for item in user.items():
#print("\t" + item.title + " - " + item.type)
num_items += 1
# folder items
for folder in user.folders:
#print("Items under " + folder['title'] + ":")
for item in user.items(folder=folder['title']):
#print("\t" + item.title + " - " + item.type)
num_items += 1
tbl.append([user.username,user.fullName,user.role,user.level,user.email,created_str,modified_str,lastlogin_str,grps,str(num_items),str(user.disabled),user.idpUsername,user.userType,user.assignedCredits,user.availableCredits])
#print(user.username + "\t" + str(user.role) + "\t" + created + "\t" + lastlogin + "\t" + grps)
columns_all = ['User','fullName','Role','Level','Email','Created','lastModified','lastLogin','Groups','Items','Disabled','idpUsername','userType','assignedCredits','availableCredits']
df = pd.DataFrame(data = tbl,columns = columns_all)
columns_show = columns_all
df[columns_show]