Как импортировать файлы, используя цикл for с именами путей в словаре в Python?

Вы можете назначить обработчик события onload для элемента в вашем документе SVG и вызвать вызов функции javascript на странице html. onload для SVGLoad.

http://www.w3.org/TR/SVG11/interact.html#LoadEvent

Событие запускается в точке, где пользовательский агент полностью проанализировал элемент и его потомков и готов действовать соответствующим образом по этому элементу

0
задан Shervin Rad 19 January 2019 в 01:45
поделиться

2 ответа

Воспроизводимый пример (однако вы должны быть очень осторожны с использованием «exec»):

# Generating data
import os
import pandas as pd
os.chdir(r'C:\Windows\Temp')
df1 = pd.DataFrame([['a',1],['b',2]], index=[0,1], columns=['col1','col2'])
df2 = pd.DataFrame([['c',3],['d',4]], index=[2,3], columns=['col1','col2'])

# Exporting data
df1.to_csv('df1.csv', index_label='Month')
df2.to_csv('df2.csv', index_label='DATE')

# Definition of Loading metadata
loading_metadata = {
    'df1_loaded':['df1.csv','Month'],
    'df2_loaded':['df2.csv','DATE'],
}

# Importing with accordance to loading_metadata (caution for indentation)
for dataset in loading_metadata.keys():
    print(dataset, loading_metadata[dataset][0], loading_metadata[dataset][1])
    exec(
"""
{0} = pd.read_csv('{1}', index_col='{2}').rename_axis('')
""".format(dataset, loading_metadata[dataset][0], loading_metadata[dataset][1])
)

Экспортированные данные (df1.csv):

Month,col1,col2
0,a,1
1,b,2

Экспортированные данные (df2. csv):

DATE,col1,col2
2,c,3
3,d,4

Загруженные данные:

df1_loaded
    col1    col2
0   a   1
1   b   2

df2_loaded
    col1    col2
2   c   3
3   d   4
0
ответ дан Juan Kania-Morales 19 January 2019 в 01:45
поделиться

Цикл for ссылается на одну и ту же переменную набора данных, поэтому каждый раз, когда выполняется цикл, переменная заменяется новым импортированным набором данных. Вам нужно где-то хранить результат, будь то новая переменная каждый раз или в словаре. Попробуйте что-то вроде этого:

googleObj = None
RDPIObj = None
CPIObj = None

data = {"google":[googleObj, "multiTimeline.csv", "Month"], 
    "RDPI":  [RDPIObj,"RealDisposableIncome-2004-1_Present-Mon-US(Grab-30-11-18).csv", "DATE"], 
    "CPI":   [CPIObj, "CPI.csv", "DATE"]}

for dataset in data.keys():
    obj = data[dataset][0]
    obj = pd.read_csv("%s" %(data[dataset][1]), index_col="%s" %(data[dataset][2]), parse_dates=["%s" %(data[dataset][2])])
    obj = dataset.loc["2004-01-01":"2018-09-01"]


Таким образом, у вас будет локальный объект фрейма данных для каждого из ваших наборов данных. Недостатком является то, что вы должны определить каждую переменную.

Другим вариантом является создание второго словаря, как вы упомянули, что-то вроде этого:

data = {"google":["multiTimeline.csv", "Month"], 
    "RDPI":  ["RealDisposableIncome-2004-1_Present-Mon-US(Grab-30-11-18).csv", "DATE"], 
    "CPI":   ["CPI.csv", "DATE"]}

output_data = {}
for dataset_key in data.keys():
    dataset = pd.read_csv("%s" %(data[dataset_key][0]), index_col="%s" %(data[dataset_key][1]), parse_dates=["%s" %(data[dataset_key][1])])
    dataset = dataset.loc["2004-01-01":"2018-09-01"]
    output_data[dataset_key] = dataset
0
ответ дан pnadolny 19 January 2019 в 01:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: