#python #pandas #dataframe #loops #formatting
#python #панды #фрейм данных #циклы #форматирование
Вопрос:
У меня есть список фреймов данных, каждый из которых создан на основе уникального веб-запроса;
bngimp = parse_forecast_data(get_json('419524'), None)
belimp = parse_forecast_data(get_json('419525'), None)
braimp = parse_forecast_data(get_json('419635'), None)
chilimp = parse_forecast_data(get_json('419526'), None)
chinimp = parse_forecast_data(get_json('419527'), None)
domimp = parse_forecast_data(get_json('419633'), None)
fraimp = parse_forecast_data(get_json('419636'), None)
greimp = parse_forecast_data(get_json('419528'), None)
ghaimp = parse_forecast_data(get_json('419638'), None)
indimp = parse_forecast_data(get_json('419530'), None)
indoimp = parse_forecast_data(get_json('419639'), None)
itaimp = parse_forecast_data(get_json('419533'), None)
japimp = parse_forecast_data(get_json('419534'), None)
kuwimp = parse_forecast_data(get_json('419640'), None)
litimp = parse_forecast_data(get_json('419641'), None)
meximp = parse_forecast_data(get_json('419537'), None)
Мне нужно отформатировать каждый фрейм данных таким же образом, как показано ниже;
bngimp = bngimp[['From Date','Sales Volume']]
bngimp = bngimp.set_index('From Date')
bngimp.index = pd.to_datetime(bngimp.index)
bngimp = bngimp.groupby(by=[bngimp.index.year, bngimp.index.month]).sum()
bngimp.columns = ['bngimp']
Есть ли какой-либо способ, которым я мог бы перебирать имена фреймов данных без необходимости копировать и вставлять каждое имя фрейма данных в приведенный выше код?
Будет еще несколько фреймов данных, поэтому копирование и вставка занимают довольно много времени!
Любая помощь очень ценится;
Ответ №1:
Я предлагаю создать словарь для номеров карт по именам фреймов данных и создать словарь DataFrame
вызываемых out
:
d = {'419524': 'bngimp', '419525': 'belimp', ...}
out = {}
for k, v in d.items():
df = parse_forecast_data(get_json(k), None)
df = df[['From Date','Sales Volume']]
df = df.set_index('From Date')
df.index = pd.to_datetime(df.index)
df = df.groupby(by=[df.index.year, df.index.month]).sum()
df.columns = [v]
out[v] = df
затем для получения фрейма данных выберите по ключу:
print (out['bngimp'])
Также, если вы хотите создать один большой фрейм данных, можно использовать:
df = pd.concat(out, axis=1)