Вы можете назначить обработчик события onload для элемента в вашем документе SVG и вызвать вызов функции javascript на странице html. onload для SVGLoad.
http://www.w3.org/TR/SVG11/interact.html#LoadEvent
Событие запускается в точке, где пользовательский агент полностью проанализировал элемент и его потомков и готов действовать соответствующим образом по этому элементу
Воспроизводимый пример (однако вы должны быть очень осторожны с использованием «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
Цикл 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