Python使用Datetime解析器、分组和查找第一个值
我面临以下挑战: 在从导入中选择所需的列后,我有一个如下所示的数据框:Python使用Datetime解析器、分组和查找第一个值,python,pandas,Python,Pandas,我面临以下挑战: 在从导入中选择所需的列后,我有一个如下所示的数据框: user_id datetime 1 1473225887 1 1373225887 1 1673225887 2 1173225887 2 1573225887 我想做两件事: (1) 使用datetime函数将datetime值转换为常规日期表示法,而不是unix_时间戳。我还没有做到这一点 (2) 根据用户id对数据进行分
user_id datetime
1 1473225887
1 1373225887
1 1673225887
2 1173225887
2 1573225887
我想做两件事:
(1) 使用datetime函数将datetime值转换为常规日期表示法,而不是unix_时间戳。我还没有做到这一点
(2) 根据用户id对数据进行分组,并且只保留每个用户id的第一个日期时间(因此是最早的日期)
到目前为止,我编写的代码如下。请注意,我是Python的初学者,我还没有管理过类,所以我希望一开始就不要类
我希望你能在这里帮助我!提前多谢
def run():
engagement_dataset = import_engagements()
engagement_dataset_first_event = first_engagement(engagement_dataset)
def import_engagements():
df_engagements = pd.read_csv('df_engagements.csv',
sep=';')
required_columns = ['engagement_unix_timestamp', 'user_id']
df_engagements = df_engagements[required_columns]
df_engagements.rename(columns={'engagement_unix_timestamp': 'datetime'}, inplace=True)
return df_engagements
def first_engagement(engagement_dataset):
engagement_dataset_grouped = engagement_dataset.groupby(['user_id'])['datetime'].idxmin().reset_index()
return engagement_dataset_grouped
run()
(1) 可以使用以下命令转换unix格式的日期时间:
df['datetime_formatted'] = pd.to_datetime(df['datetime'], unit='s')
(2) 然后,您可以按用户分组,并通过agg聚合,找到该用户的最短日期:
df.groupby('user_id').agg({'datetime_formatted':'min'})
是一个讨论unix日期时间转换的答案,对于第二部分,您应该能够使用
groupby().min()
而不是idxmin
来启动。请为您的答案添加解释。