【发布时间】:2021-01-10 14:53:50
【问题描述】:
我有这个 df:
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
df = pd.DataFrame({"Time": ['2020-04-09 06:46:00', '2020-04-09 06:46:00', '2020-04-09 06:46:00', '2020-04-09 08:52:00',
'2020-04-09 08:52:00', '2020-04-09 08:52:00', '2020-04-09 16:03:00', '2020-04-10 06:50:00',
'2020-04-10 06:50:00', '2020-04-10 12:33:00', '2020-04-10 12:33:00'],
"ID": [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2]})
df['Time'] = pd.to_datetime(df['Time'])
df['ID'] = pd.to_numeric(df['ID'])
输出:
Time ID
0 2020-04-09 06:46:00 1
1 2020-04-09 06:46:00 1
2 2020-04-09 06:46:00 1
3 2020-04-09 08:52:00 1
4 2020-04-09 08:52:00 1
5 2020-04-09 08:52:00 1
6 2020-04-09 16:03:00 2
7 2020-04-10 06:50:00 2
8 2020-04-10 06:50:00 2
9 2020-04-10 12:33:00 2
10 2020-04-10 12:33:00 2
现在我想创建一个新的df_event,列出不同的IDs 和相关的Time (min())。但是当我执行以下 for 循环时:
df_event = pd.DataFrame(columns=['ID', 'Time'])
t = df['ID'].unique()
df_event['ID']=t
for item in t:
df_sub=df[df.ID == item]
df_event['Time']=np.where(df_event['ID']==item,df_sub.Time.min(), df_event['Time'])
df_event
第一个条目输出为 int 而不是 datetime:
ID Time
0 1 1586414760000000000
1 2 2020-04-09 16:03:00
如果有多个条目,问题只会出现在第一行。
【问题讨论】:
标签: python python-3.x pandas dataframe for-loop