【问题标题】:How To Aggregate Multiple DataFrame in a Better Way?如何以更好的方式聚合多个 DataFrame?
【发布时间】:2019-03-13 21:54:13
【问题描述】:

所以我有 36 个 DataFrame 我必须在这三列 ['Sensor ID' , 'Time Instant' , 'Measurement'] 上合并到一个 DataFrame 中]

所以,这就是我所做的:

mi_pollution_1 = pd.read_csv('/content/drive/My Drive/DatiAirQuality/MI_Air_Quality/data/mi_pollution_10273.csv' )
mi_pollution_1.columns= ['Sensor ID' , 'Time Instant' , 'Measurement']
mi_pollution_2 = pd.read_csv('/content/drive/My Drive/DatiAirQuality/MI_Air_Quality/data/mi_pollution_10278.csv')
mi_pollution_2.columns= ['Sensor ID' , 'Time Instant' , 'Measurement']
mi_pollution_3 = pd.read_csv('/content/drive/My Drive/DatiAirQuality/MI_Air_Quality/data/mi_pollution_10279.csv')
mi_pollution_3.columns= ['Sensor ID' , 'Time Instant' , 'Measurement']

.
.
.
.
mi_pollution_35= pd.read_csv('/content/drive/My Drive/DatiAirQuality/MI_Air_Quality/data/mi_pollution_6372.csv')
mi_pollution_35.columns= ['Sensor ID' , 'Time Instant' , 'Measurement']
mi_pollution_36= pd.read_csv('/content/drive/My Drive/DatiAirQuality/MI_Air_Quality/data/mi_pollution_6372.csv')
mi_pollution_36.columns= ['Sensor ID' , 'Time Instant' , 'Measurement']

然后:

 frames = [mi_pollution_1 , mi_pollution_2 ,mi_pollution_3 , mi_pollution_4,
     mi_pollution_5 , mi_pollution_6,mi_pollution_7 , mi_pollution_8,
     mi_pollution_9 , mi_pollution_10,mi_pollution_11 , mi_pollution_12, 
     mi_pollution_13 , mi_pollution_14, mi_pollution_15 , mi_pollution_16,
     mi_pollution_17 , mi_pollution_18 ,mi_pollution_19 , mi_pollution_20,
     mi_pollution_21 , mi_pollution_22,mi_pollution_23 , mi_pollution_24,
     mi_pollution_25 , mi_pollution_26,mi_pollution_27 , mi_pollution_28, 
     mi_pollution_29 , mi_pollution_30, mi_pollution_31 , mi_pollution_32,
     mi_pollution_33 , mi_pollution_34, mi_pollution_35 , mi_pollution_36]

 df_result = pd.merge(frames , on = ['Sensor ID' , 'Time Instant' , 'Measurement'])

所以,我想知道是否有更有效和“更清洁”的方式来实现它。 谢谢

【问题讨论】:

    标签: python-3.x dataframe merge


    【解决方案1】:

    如果您的文件内容是同质的,看起来它们是基于您上面的示例,我认为首先将数据加载为列表可能会更干净。

    import csv
    import pandas as pd
    
    file_name = ['sample_file1.csv', 'sample_file2.csv', 'sample_file3.csv']
    
    content = []
    for n in file_name:
        with open(n) as f: 
            reader = csv.reader(f, delimiter=',')
            content += list(reader)[1:] # If the first row contains headers
    
    df = pd.DataFrame(content)
    df.columns = ['Sensor ID' , 'Time Instant' , 'Measurement']
    

    【讨论】:

    • 非常感谢,确实,比上面的“混乱”更干净有效:-),再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2019-03-24
    • 2021-12-16
    • 2020-07-28
    • 2021-04-20
    • 1970-01-01
    相关资源
    最近更新 更多