Lai*_*nts 5 python csv pandas pandas-groupby
我正在使用 pandas 加载 CSV 文件。它包含三列:一列包含日期和时间、一列包含用户 ID 和另一个“campaignID”。示例行:
date user_id campaign_id
2018-01-10 0:21:09 151312395 GOOGLE
2018-01-10 0:21:19 151312395 GOOGLE
2018-01-10 0:21:32 151312395 GOOGLE
Run Code Online (Sandbox Code Playgroud)
我想按用户 ID 对数据进行分组,然后对于每个用户 ID 按时间和活动 ID 对行进行分组,它应如下所示。
user_id date ad_campaign
151312395 2018-01-10 0:21:09 GOOGLE
2018-01-10 0:21:19 GOOGLE
2018-01-10 0:21:32 GOOGLE
Run Code Online (Sandbox Code Playgroud)
这就是我到目前为止所做的: import pandas as pd import numpy as np import datetime
def dateparse(time_in_secs):
return datetime.datetime.fromtimestamp(float(time_in_secs))
columnnames = ['date','user_id', 'ad_campaign']
columnnames, sep='\t' ,usecols=[0,1,3],index_col = 'date')
df=pd.read_csv(r'C:\Users\L\Desktop\Data.csv' ,
sep='\t',names = columnnames, usecols=[0,1,3],
parse_dates=True,date_parser=dateparse)
df.date = pd.to_datetime(df.date)
df = df.sort_values(by = 'date')
g = df.groupby('user_id')['ad_campaign']
print(g)
Run Code Online (Sandbox Code Playgroud)
这给出了以下输出:
<pandas.core.groupby.SeriesGroupBy object at 0x04EF26F0>
[Finished in 0.6s]
Run Code Online (Sandbox Code Playgroud)
为什么打印不提供排序列?
首先,如果您正在这样做groupby,则不需要显式对列进行排序。
你可以做:
方法一:
df.date = pd.to_datetime(df.date)
g = df.groupby(['user_id','date'])['ad_campaign']
print(g.first())
Run Code Online (Sandbox Code Playgroud)
方法二:
df.set_index(['user_id','date']).sort_index()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8375 次 |
| 最近记录: |