Используя concat для словаря, я получаю сообщение об ошибке: первый аргумент должен быть повторяемым из объектов pandas, вы передали объект типа «DataFrame» - PullRequest
0 голосов
/ 23 октября 2019

У меня есть словарь с фреймами данных, который выглядит следующим образом:

dataframes = {'Df_20100101': DataFrame, 'Df_20100102': DataFrame, 'Df_20100103': DataFrame}

Все фреймы данных имеют одинаковые переменные (цена, объем и дата) и один и тот же индекс. Я хочу поместить все разные фреймы данных в 1 фрейм данных. Я использую следующий код:

df = pd.concat([pd.concat(v,ignore_index=True) for k,v in dataframes.items()])

Однако я получаю ошибку: the first argument must be iterable of pandas objects, you passed an object of type "DataFrame".

Это потому, что все переменные имеют одинаковый индекс?

Можеткто-нибудь поможет мне?

Спасибо!

1 Ответ

1 голос
/ 23 октября 2019

Вы звоните pd.concat на отдельные кадры данных в своем словаре (вы вложили pd.concat() вызовы). Вместо этого вы просто хотите, чтобы понимание списка собрало кадры данных в единый список и вызвало .concat() для этого:

df = pd.concat([v for _, v in dataframes.items()], ignore_index=True)

for k, v также вполне допустимо, но обычно для использования _значения, которые вы собираетесь выбросить, и здесь вы не используете ключ.

Вы также можете просто использовать .values():

df = pd.concat(dataframes.values(), ignore_index=True)
...