簡體   English   中英

如何使用 python 在多行中讀取 yaml

[英]how to read yaml in multiple row using python

我們正在閱讀 yaml 文件,並在 python 中使用以下代碼,但它給了我 [1 行 x 30 列] 但我想要它在 2 行中。 my_table_01 為 1 行,my_table_02 為另一行(在代碼下方提供示例數據)

import pandas as pd
from yaml import safe_load
def read_yaml(path):
    #fs = gcsfs.GCSFileSystem()
    with open(path, 'r') as f:
        df = pd.json_normalize(safe_load(f))
    return df
df_master = read_yaml('new 7.yml')
print(df_master)

我的新 7.yml 具有以下數據,

cat new 7.yml-->
config_queries: 
            my_table_01 :
                           PIPELINE_NAME: "table_01"
                           RUN_FLAG: "True"  
                           STAGE: "edw_to_eim"
                           SUBJECT_AREA: "account"
                           SOURCE_DATABASE: "dev_db"
                           SOURCE_TABLE_NAME: "table"
                           TARGET_DATABASE: "dev_db"
                           TARGET_TABLE_NAME: "table"
                           TARGET_TABLE_TYPE: "ed"
                           DELTA_COLUMN: "N"
                           DELTA_COLUMN_NAME: "N"
                           DOP_VALUE: "N"
                           SOURCE_QUERY_KPI: {'tab_kpi_01':True,'tab_kpi_02':True}
                           TARGET_QUERY_KPI: {'tab_kpi_01':True,'tab_kpi_02':True}
                                                                                                                         
            my_table_02  : 
                           PIPELINE_NAME: "table_02"
                           RUN_FLAG: "True"  
                           STAGE: "edw_to_eim"
                           SUBJECT_AREA: "account"
                           SOURCE_DATABASE: "dev_db"
                           SOURCE_TABLE_NAME: "table"
                           TARGET_DATABASE: "dev_db"
                           TARGET_TABLE_NAME: "table"
                           TARGET_TABLE_TYPE: "ed"
                           DELTA_COLUMN: "N"
                           DELTA_COLUMN_NAME: "N"
                           DOP_VALUE: "N"
                           SOURCE_QUERY_KPI: {'tab_kpi_01':True}
                           TARGET_QUERY_KPI: {'tab_kpi_01':True}

json_normalize需要一個dicts list ,如果要創建多行,則不是單個嵌套dict 因此,您需要將嵌套的dict '解包'到dicts list中,例如通過獲取config_queriesvalues()

import pandas as pd        
from yaml import safe_load
def read_yaml(path):
    #fs = gcsfs.GCSFileSystem()
    with open(path, 'r') as f:
        df = pd.json_normalize(safe_load(f)['config_queries'].values()]
    return df
df_master = read_yaml('new 7.yml')
print(df_master)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM