首页 > 解决方案 > 如何将具有多个数据的 csv 导入不同的数据帧?

问题描述

这是我作为输入的csv:

在此处输入图像描述

我想为每个变量创建 3 个数据框BEL AIR - feeder_30 - MANGUIERBEL_TC_30_TR3_MWBEL AIR - feeder_30 - MTOA. 它将具有Date作为索引和值的Valeur值。

我试过这个:

data_adms = pd.read_csv(full_path,sep=';',index_col=False, header=6)

但它摆脱了nom du point distant. 并且行之间的时间戳不一样。

有人知道我该如何正确进行吗?

标签: pandasdataframecsv

解决方案


因此,给定以下 csv 文件:

                     0                               1   ...          10           11
0                Source                PUISSANCE ACTIVE  ...         NaN          NaN
1  Nom du point distant  BEL AIR - feeder_30 - MANGUIER  ...         NaN          NaN
2          Propriétaire                Puissance active  ...         NaN          NaN
3                 Unité                              Kw  ...         NaN          NaN
4                 Phase                        L1 L2 L3  ...         NaN          NaN
5       Echantillonnage      Moyenne (Interval : 01:00)  ...         NaN          NaN
6                  Date                          Valeur  ...     Qualité  Indicateurs
7      01/09/2020 13:53                      5189,60325  ...  Discutable          NaN
8      02/09/2020 13:54                      5043,68066  ...  Discutable          NaN
9      03/09/2020 13:55                      4805,71191  ...  Discutable          NaN

您可以像这样获得名称和列号:

raw_data = pd.read_csv(
    filepath_or_buffer="./file.csv", sep=";", header=None, engine="python"
)
data = {raw_data.loc[1, x]: x for x in range(1, raw_data.shape[1], 4)}
print(data)
# Outputs
{'BEL AIR - feeder_30 - MANGUIER': 1, 'BEL_TC_30_TR3_MW': 5, 'BEL AIR - feeder_30 - MTOA': 9}

然后,您可以导入数据框并将它们与其名称配对,如下所示:

dfs = []
for name, col in data.items():
    df = pd.read_csv(
        filepath_or_buffer="./scripts/test.csv",
        sep=";",
        header=0,
        skiprows=6,
        usecols=[col - 1, col],
        engine="python",
    )
    df.columns = ["Date", "Valeur"]
    df.set_index("Date", inplace=True)
    df.columns.name = name
    dfs.append(df)

在这种情况下:

for df in dfs:
    print(df)

# Outputs

BEL AIR - feeder_30 - MANGUIER      Valeur
Date
01/09/2020 13:53                5189,60325
02/09/2020 13:54                5043,68066
03/09/2020 13:55                4805,71191

BEL_TC_30_TR3_MW        Valeur
Date
01/09/2020 13:53   -47,3029671
02/09/2020 13:54  -5,829510403
03/09/2020 13:55    1,52590215

BEL AIR - feeder_30 - MTOA      Valeur    
Date                                      
01/09/2020 13:53            5189,60325    
02/09/2020 13:54            5043,68066    
03/09/2020 13:55            4805,71191 

推荐阅读