Python 我想从customer_数据打印每个迭代中的所有唯一日期

Python 我想从customer_数据打印每个迭代中的所有唯一日期,python,pandas,dataframe,for-loop,unix-timestamp,Python,Pandas,Dataframe,For Loop,Unix Timestamp,下面代码的目的是查找客户id在特定日期在线花费的小时数。我无法获取所有日期(即2017年6月1日至2017年6月21日)的在线时间。我已附上当前代码的o/p图像、客户数据的csv文件和pings数据: 导入日期时间 输入数学 final_train_df=pd.DataFrame(列=['id','date','hours']) 排除的客户ID=[] 最终_集={} 列车__df=pd.DataFrame() 对于索引,我在枚举(customer_数据['id'][:10].va

下面代码的目的是查找客户id在特定日期在线花费的小时数。我无法获取所有日期(即2017年6月1日至2017年6月21日)的在线时间。我已附上当前代码的o/p图像、客户数据的csv文件和pings数据:

导入日期时间
输入数学
final_train_df=pd.DataFrame(列=['id','date','hours'])
排除的客户ID=[]
最终_集={}
列车__df=pd.DataFrame()
对于索引,我在枚举(customer_数据['id'][:10].values.tolist()中:
打印('Started for CustID'+str(i)+“计数为”+str(索引))
列车df['timestamp']=pings_数据。loc[pings_数据['id']==i][“timestamp”]
列车df['date']=pings_数据。loc[pings_数据['id']==i][“时间戳”]。应用(lambda arr:
datetime.datetime.fromtimestamp(arr).strftime(“%Y-%m-%d”))
列车df['time']=pings_数据。loc[pings_数据['id']==i][“timestamp”]。应用(lambda arr:
datetime.datetime.fromtimestamp(arr).strftime(“%H:%M:%S”))
唯一日期=pd.unique(train_udf['date'])。tolist()
打印(唯一日期)
如果math.isnan(train_uudf['timestamp'].values.tolist()[0]):
排除的客户ID。附加(i)
其他:
对于唯一日期的j:
时间戳=train\uu-df.loc[train\uu-df['date']==j]。排序值(按='time')
结束时间=时间戳['time'].iloc[len(时间戳)-1]
开始时间=时间戳['time'].iloc[0]
t1=pd.to_日期时间(开始时间)
t2=pd.to_日期时间(结束时间)
差异时间=圆形((pd.Timedelta(t2-t1)。秒/(3600)),1)
val={'id':i,'date':j,'hours':diff_time}
final_train_df=final_train_df.append({'id':i,'date':j,'hours':diff_time},True)
打印(最终列车测向)
打印(不包括客户ID)
最终列至excel(“最终列不包括客户ID.xlsx”)
打印(“为除非活动客户以外的所有客户填写”)

请尝试此方法。如果您需要在两个不同的列中显示日期和时间戳,我们也可以这样做

df_cust = pd.read_excel("./cust.xlsx")
df_pings = pd.read_excel("./pings.xlsx")
df_cust.set_index("id")
df_pings.set_index("id")
new_df = pd.merge(df_cust, df_pings)
new_df['time'] = new_df['timestamp'].apply(lambda x: 
str(datetime.datetime.fromtimestamp(x) ))
以上代码的O/p

id      gender  age number_of_kids  timestamp   time
21      MALE    26  2               1496278800  2017-06-01 06:30:00
23      FEMALE  21  1               1496278800  2017-06-01 06:30:00
22      MALE    33  1               1496278800  2017-06-01 06:30:00
24      MALE    35  1               1496278815  2017-06-01 06:30:15
25      FEMALE  40  2               1496278800  2017-06-01 06:30:00
26      MALE    50  2               1496278900  2017-06-01 06:31:40

new_-df['time']=new_-df['timestamp'].apply(lambda x:str(datetime.datetime.fromtimstamp(x)))


new_df['time']=new_df['time'].apply(lambda x:x.split(“”)[1]。split(“:”[0])

Hey@geek_bs谢谢你的帮助。我已将unix时间戳转换为可读格式。我需要找到每个客户id在每个特定日期花费的在线小时数。当前o/p仅打印一个日期的数据。rest所有唯一id都存储在NaN列表中。只需显示小时而不是年、分钟?随着日期的更改,我也可以在没有NaN的情况下获得输出。请共享整个xls,以便我们了解列数据变为NAN的原因。我正在粘贴excel工作表的链接。请查看它。