【问题标题】:How to import a csv with multiple data into different dataframes?如何将具有多个数据的 csv 导入不同的数据帧?
【发布时间】:2021-12-05 18:31:05
【问题描述】:

这是我作为输入的 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 的名称。 而且行之间的时间戳也不一样。

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

【问题讨论】:

  • 嗨,假设每个数据集(从“源”到下一个“一个”)之间的列数是否安全?另外,您要保留的标题在第六个行,对吧?
  • 感谢编辑!是的,每个数据集之间的列数是相同的。在第 7 行是的。但我需要传递每个数据集的名称(在单元格 B2、F2、...中)

标签: pandas dataframe csv


【解决方案1】:

所以,给定以下 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 

【讨论】:

  • 抱歉回复晚了,我刚回到项目。这正是我一直在寻找的并且完美地工作。非常感谢!!
猜你喜欢
  • 1970-01-01
  • 2019-08-03
  • 2019-05-26
  • 2021-01-22
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 2020-06-05
相关资源
最近更新 更多