请求:按ID聚合DataFrame特征生成统计列并保存为CSV
问题描述
现有DataFrame结构如下:
ID visit feature 1 feature 2 1 m1 2 4 1 m2 5 9 1 m3 3 4 1 m4 4 0 2 m1 2 m2 5 6 2 m2 4 4 2 m4 3 3
需要按ID聚合所有visit对应的特征,每个ID对应一行,生成包含各特征最大值、最小值的统计结果,最终结构如下:
ID Max_feature1 min_feature1 max_feature2 min_feature2 1 5 2 9 0 2 5 3 6 3
聚合完成后将结果保存为CSV文件,需要实现方案。
解决方案
使用Python的pandas库可以高效实现该需求,具体步骤如下:
读取/创建DataFrame
先将原始数据加载到pandas DataFrame中,如果数据来自本地文件,可使用pd.read_csv()方法读取。以下是构造示例数据的代码:import pandas as pd # 构造原始DataFrame data = { 'ID': [1,1,1,1,2,2,2,2], 'visit': ['m1','m2','m3','m4','m1','m2','m2','m4'], 'feature 1': [2,5,3,4,None,5,4,3], 'feature 2': [4,9,4,0,None,6,4,3] } df = pd.DataFrame(data)按ID聚合计算统计值
通过groupby()按ID分组,针对每个特征列分别计算最大值和最小值,并用reset_index()将ID从索引转为普通列:# 分组聚合,指定统计项与对应列名 agg_result = df.groupby('ID').agg( Max_feature1=('feature 1', 'max'), min_feature1=('feature 1', 'min'), max_feature2=('feature 2', 'max'), min_feature2=('feature 2', 'min') ).reset_index()保存为CSV文件
使用to_csv()方法将聚合结果保存为CSV文件,设置index=False避免写入索引列:agg_result.to_csv('aggregated_features.csv', index=False)
内容的提问来源于stack exchange,提问作者Nora Mahmoud
相关产品推荐
相关产品推荐

