Как сложить несколько фреймов данных Pandas


Часто вы можете захотеть сложить два или более панд DataFrames. К счастью, это легко сделать с помощью функции pandas concat() .

В этом руководстве показано несколько примеров того, как это сделать.

Пример 1. Стек двух фреймов данных Pandas

В следующем коде показано, как «сложить» два кадра данных pandas друг над другом и создать один кадр данных:

import pandas as pd

#create two DataFrames
df1 = pd.DataFrame({'player': ['A', 'B', 'C', 'D', 'E'],
 'points':[12, 5, 13, 17, 27]})

df2 = pd.DataFrame({'player': ['F', 'G', 'H', 'I', 'J'],
 'points':[24, 26, 27, 27, 12]})

#"stack" the two DataFrames together
df3 = pd.concat([df1,df2], ignore_index= True )

#view resulting DataFrame
df3

 player points
0 A 12
1 B 5
2 C 13
3 D 17
4 E 27
5 F 24
6 G 26
7 H 27
8 I 27
9 J 12

Пример 2. Стек из трех фреймов данных Pandas

Аналогичный код можно использовать для наложения трех фреймов данных pandas друг на друга для создания одного фрейма данных:

import pandas as pd

#create three DataFrames
df1 = pd.DataFrame({'player': ['A', 'B', 'C', 'D', 'E'],
 'points':[12, 5, 13, 17, 27]})

df2 = pd.DataFrame({'player': ['F', 'G', 'H', 'I', 'J'],
 'points':[24, 26, 27, 27, 12]})

df3 = pd.DataFrame({'player': ['K', 'L', 'M', 'N', 'O'],
 'points':[9, 5, 5, 13, 17]})

#"stack" the two DataFrames together
df4 = pd.concat([df1,df2, df3], ignore_index= True )

#view resulting DataFrame
df4

 player points
0 A 12
1 B 5
2 C 13
3 D 17
4 E 27
5 F 24
6 G 26
7 H 27
8 I 27
9 J 12
10 K 9
11 L 5
12 M 5
13 N 13
14 O 17

Важность ignore_index

Обратите внимание, что в предыдущих примерах мы использовали ignore_index=True .

Это говорит pandas игнорировать номера индексов в каждом DataFrame и создавать новый индекс в диапазоне от 0 до n-1 для нового DataFrame.

Например, рассмотрим, что происходит, когда мы не используем ignore_index=True при размещении следующих двух кадров данных:

import pandas as pd

#create two DataFrames with indices
df1 = pd.DataFrame({'player': ['A', 'B', 'C', 'D', 'E'],
 'points':[12, 5, 13, 17, 27]},
 index=[0, 1, 2, 3, 4])

df2 = pd.DataFrame({'player': ['F', 'G', 'H', 'I', 'J'],
 'points':[24, 26, 27, 27, 12]},
 index=[2, 4, 5, 6, 9])

#stack the two DataFrames together
df3 = pd.concat([df1,df2])

#view resulting DataFrame
df3

 player points
0 A 12
1 B 5
2 C 13
3 D 17
4 E 27
2 F 24
4 G 26
5 H 27
6 I 27
9 J 12

Результирующий DataFrame сохранил свои исходные значения индекса из двух DataFrame.

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

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в Pandas:

Как добавить пустой столбец в Pandas DataFrame
Как вставить столбец в фрейм данных Pandas
Как экспортировать фрейм данных Pandas в Excel

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.