Как я уже говорил ранее, кадры данных, заданные в оригинальном вопросе, были частью проблемы. На самом деле у меня было 14 разных фреймов данных, которые я извлек из двухстраничного PDF-файла с помощью пакета Tabula. Фактический PDF имел 7 кадров данных на каждой странице с одинаковыми заголовками столбцов. А пока давайте не будем вдаваться в то, как я извлекся с использованием Tabula, и сосредоточимся на кадрах данных. Кто-то просто спросил версию Python, я использовал Python 2.7.
Dataframes:
df2 = pd.DataFrame(np.random.randint(0, 250, (4,3)), columns = ["A", "B", "C"], index = [1, 2, 3, 4])
df3 = pd.DataFrame(np.random.randint(0, 250, (4,2)), columns = ["D", "E"], index = [100, 101, 102, 103])
df4 = pd.DataFrame(np.random.randint(0, 5000, (11,5)), columns = ["F", "G", "H", "I", "J"], index = [1, 2, 3, 4, 5, 6, 7, 100, 101, 102, 103])
df5 = pd.DataFrame(np.random.randint(0, 300, (4,2)), columns = ["N", "O"], index = [1, 2, 3, 4])
df6 = pd.DataFrame(np.random.randint(0, 250, (4,3)), columns = ["P", "Q", "R"], index = [1, 2, 3, 4])
df7 = pd.DataFrame(np.random.randint(0, 5000, (7,3)), columns = ["K", "L", "M"], index = [1, 2, 3, 100, 101, 102, 103])
df8 = pd.DataFrame(np.random.randint(0, 300, (4,1)), columns = ["S"], index = [100, 101, 102, 103])
df9 = pd.DataFrame(np.random.randint(0, 400, (4,3)), columns = ["A", "B", "C"], index = [1, 2, 3, 4])
df10 = pd.DataFrame(np.random.randint(0, 250, (4,2)), columns = ["D", "E"], index = [100, 101, 102, 103])
df11 = pd.DataFrame(np.random.randint(0, 5000, (11,5)), columns = ["F", "G", "H", "I", "J"], index = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
df12 = pd.DataFrame(np.random.randint(0, 500, (4,2)), columns = ["N", "O"], index = [1, 2, 3, 4])
df13 = pd.DataFrame(np.random.randint(0, 600, (4,3)), columns = ["P", "Q", "R"], index = [1, 2, 3, 4])
df14 = pd.DataFrame(np.random.randint(0, 700, (4,1)), columns = ["S"], index = [1, 2, 3, 4])
df15 = pd.DataFrame(np.random.randint(0, 5000, (7,3)), columns = ["K", "L", "M"], index = [1, 2, 3, 4, 5, 6 ,7])
Я хотел объединить эти кадры данных в строках, а не в столбцах. Итак, сначала я создал объединенный фрейм данных, чтобы идентифицировать список уникальных индексов:
df16 = pd.concat([df2, df3, df4, df5, df6, df7, df8, df9, df10, df11, df12, df13, df15, df14], axis = "columns")
тогда
df18 = pd.DataFrame(index = list(df16.index.unique()))
df19 = pd.DataFrame(index = list(df16.index.unique()))
Идея создать два пустых столбца данных состояла в том, чтобы избежать ошибки в дублирующемся столбце. Затем, как предложил @amr keleg (спасибо!), Я продолжил присоединять кадры данных (df2 .... df8) с первой страницы к df18 и второй страницы к (df9 ... df15). Теперь стало проще:
df18 = df18.join([df2, df3, df4, df5, df6, df7, df8])
df19 = df19.join([df9, df10, df11, df12, df13, df14, df15])
Теперь используйте pd.concat для объединения двух вышеупомянутых фреймов данных, чтобы получить желаемое решение:
df20 = pd.concat([df18, df19])
df20.sort_index(axis = 0, inplace = True, ascending = True)
Я не эксперт по Python. Я просто ученик! Для тех, у кого есть лучшее решение, они могут помочь.