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
来启动。请为您的答案添加解释。