【发布时间】:2026-01-30 10:55:01
【问题描述】:
我有一个电子邮件地址列表,我想在有序字典中找到匹配项,并将其转换为数据框。
这是我的电子邮件地址列表:
email_list = ['c@aol.com','g@aol.com','b@aol.com','a@aol.com']
这是我的字典变成了 DataFrame (df2):
sender type _time
0 c@aol.com email 2020-12-09 19:45:48.013140
1 c@aol.com email 2020-13-09 19:45:48.013140
2 g@aol.com email 2020-12-09 19:45:48.013140
3 b@aol.com email 2020-14-11 19:45:48.013140
我想创建一个新的 DataFrame,它显示匹配的发件人的列、匹配数(计数)、第一次看到的日期和最后一次看到的日期。全部由匹配的发件人分组。第一次看到的日期将是匹配发件人的 _time 列中的最小时间戳,最后看到的列值将是匹配发件人的 _time 列中的最大时间戳。
脚本运行后的示例输出如下所示:
sender count type first_seen last_seen
0 c@aol.com 2 email 2020-12-09 19:45:48.013140 2020-13-09 19:45:48.013140
1 g@aol.com 1 email 2020-12-09 19:45:48.013140 2020-12-09 19:45:48.013140
2 b@aol.com 1 email 2020-14-11 19:45:48.013140 2020-14-11 19:45:48.013140
3 a@aol.com 0 email NA NA
到目前为止,这是我的蟒蛇:
#Collect list of email addresses I want to find in df2
email_list = ['c@aol.com','g@aol.com','b@aol.com','a@aol.com']
# Turn email list into a dataframe
df1 = pd.DataFrame(email_list, columns=['sender'])
# Collect the table that holds the dictionary of emails sent
email_result_dict = {'sender': ['c@aol.com','c@aol.com','g@aol.com','b@aol.com',], 'type': ['email','email','email','email'], '_time': [' 2020-12-09 19:45:48.013140','2020-13-09 19:45:48.013140','2020-12-09 19:45:48.013140','2020-14-09 19:45:48.013140']}
# Turn dictionary into dataframe
df2 = pd.DataFrame.from_dict(email_result_dict)
# Calculate stats
c = df2.loc[df2['sender'].isin(df1['sender'].values)].groupby('sender').size().reset_index()
output = df1.merge(c, on='sender', how='left').fillna(0)
output['first_seen'] = df2.iloc[df2.groupby('sender')['_time'].agg(pd.Series.idxmin] # Get the earliest value in '_time' column
output['last_seen'] = df2.iloc[df2.groupby('sender')['_time'].agg(pd.Series.idxmax] # Get the latest value in '_time' column
# Set the columns of the new dataframe
output.columns = ['sender', 'count','first_seen', 'last_seen']
关于如何在数据框中获得预期输出的任何想法或建议?我已经尝试了所有方法,并且一直卡在为每个计数大于 0 的匹配获取 first_seen 和 last_seen 值。
【问题讨论】:
标签: python python-3.x pandas dataframe