时间序列DataFrame经groupby生成序列后导出CSV如何去掉user_session ID
问题解决方法
首先修正你原有分组代码的语法错误:你写的groupby语句缺少闭合括号,修正后分组代码如下:
grouped_df = ( df1.sort_values(['event_time'],ascending=True) .groupby(by='user_session')['event_type'] .apply(list) .to_frame(name='sequences') )
你导出CSV时自动带上的user_session是groupby生成的行索引,pandas的to_csv方法默认会导出索引列,只需要添加参数关闭索引导出即可。
方案1:直接导出仅保留序列列
不需要修改DataFrame结构,导出时添加index=False关闭行索引导出,同时添加header=False关闭表头导出,避免多余的列名行影响PrefixSpan输入:
grouped_df.to_csv('prefixspan_input.csv', index=False, header=False)
方案2:适配PrefixSpan输入格式优化
如果你的PrefixSpan实现需要纯行为序列、不需要列表的括号、引号格式,可以先把序列列的列表转换为分隔符拼接的字符串后再导出:
# 示例用空格作为行为分隔符,可根据需要替换为逗号等其他分隔符 grouped_df['sequences'] = grouped_df['sequences'].apply(lambda x: ' '.join(x)) # 导出无索引无表头的纯序列文件 grouped_df.to_csv('prefixspan_input.csv', index=False, header=False)
导出后的文件内容样例如下,完全满足PrefixSpan的输入要求:
view view purchase view add view purchase view view view
内容的提问来源于stack exchange,提问作者Robin van Heesch
相关产品推荐
相关产品推荐

