使用Pandas加载CSV后按用户ID分组、按时间及CampaignID整理数据
解决Pandas分组整理CSV数据的方案
嘿,我来帮你搞定这个数据整理需求!针对你给出的CSV结构和预期输出,咱们可以分几步用Pandas轻松实现:
1. 加载CSV并解析日期列
首先加载文件时,记得把date列解析成datetime类型,这样后续按时间排序才会准确:
import pandas as pd # 加载CSV,自动将date列解析为datetime格式 df = pd.read_csv('your_data.csv', parse_dates=['date'])
2. 按用户分组并按时间排序
接下来先按user_id分组,同时在每个用户组内按date(时间)排序,确保数据是按时间顺序排列的:
# 先按user_id分组,再按date从小到大排序 df_sorted = df.sort_values(by=['user_id', 'date'])
3. 整理成预期格式(重复user_id仅显示一次)
为了让每个user_id只在第一行显示,后续行留空,咱们可以用where方法处理重复值,同时把campaign_id重命名为你想要的ad_campaign:
# 只保留每个user_id的首次出现值,其余行设为空字符串 df_sorted['user_id'] = df_sorted['user_id'].where(df_sorted['user_id'] != df_sorted['user_id'].shift(), '') # 重命名列名匹配预期格式 df_final = df_sorted.rename(columns={'campaign_id': 'ad_campaign'})
4. 查看最终结果
最后输出整理好的数据,用to_string(index=False)去掉索引,就能得到你想要的格式:
print(df_final.to_string(index=False))
运行后输出的结果会是这样:
user_id date ad_campaign 151312395 2018-01-10 00:21:09 GOOGLE 2018-01-10 00:21:19 GOOGLE 2018-01-10 00:21:32 GOOGLE
如果你的CSV里有多个不同的user_id,这个方法也能自动处理每个用户组的独立排序和格式整理哦~
内容的提问来源于stack exchange,提问作者Laila Van Ments
相关产品推荐
相关产品推荐

