Pandas: Структурна конкатенація операцій
Конкатенація (зовнішнє з'єднання)
Припустимо, що у нас є фрейми даних A і B із спільними елементами серед індексів і стовпців.
Тепер об’єднання. Це не додаток. (Для цього існує функція append().) Ця операція concat() створює надмножину обох наборів a і b, але об’єднує загальні рядки. Це також не внутрішнє об’єднання, оскільки воно перераховує всі рядки, навіть ті, для яких немає загального індексу.
Зверніть увагу на відсутні значення NaN. Тут немає відповідних індексів кадру даних у кадрі B з індексом у кадрі даних A.
Наприклад, індекс 3 є в обох кадрах даних. Отже, Pandas копіює 4 стовпці з першого фрейму даних і 4 стовпці з другого фрейму даних у новостворений фрейм даних. Подібним чином індекс 5 є у кадрі даних B, але не в кадрі даних A для стовпців 1, 2, 3. Тому ці стовпці позначено як відсутні (NaN).
a = pd.DataFrame({'column1': ['A', 'C', 'D', 'E'],
'column2': ['F', 'G', 'H', 'I'],
'column3': ['J', 'K', 'L', 'M'],
'column4': ['N', 'O', 'P', 'Q']},
index=[1,2,3,4])
b = pd.DataFrame({'column3': ['R', 'S', 'T', 'U'],
'column5': ['V', 'W', 'X', 'Y'],
'column6': ['Z', 'α', 'β', 'υ'],
'column7': ['σ', 'χ', 'ι', 'κ']},
index=[3,4,5,6])
result = pd.concat([a, b], axis=1)
Результат:
Об’єднання кількох фреймів даних за допомогою pandas.concat()
Ви також можете використовувати метод pandas.concat() для об’єднання кількох DataFrames.
import pandas as pd
df = pd.DataFrame({'Courses': ["Spark", "PySpark", "Python", "Pandas"],
'Fee' : ['20000', '25000', '22000', '24000']})
df1 = pd.DataFrame({'Courses': ["Unix", "Hadoop", "Hyperion", "Java"],
'Fee': ['25000', '25200', '24500', '24900']})
df2 = pd.DataFrame({'Duration':['30day','40days','35days','60days','55days'],
'Discount':[1000,2300,2500,2000,3000]})
# Appending multiple DataFrame
df3 = pd.concat([df, df1, df2])
print(df3)
Поля нижче виходу:
Courses Fee Duration Discount
0 Spark 20000 NaN NaN
1 PySpark 25000 NaN NaN
2 Python 22000 NaN NaN
3 Pandas 24000 NaN NaN
0 Unix 25000 NaN NaN
1 Hadoop 25200 NaN NaN
2 Hyperion 24500 NaN NaN
3 Java 24900 NaN NaN
0 NaN NaN 30day 1000.0
1 NaN NaN 40days 2300.0
2 NaN NaN 35days 2500.0
3 NaN NaN 60days 2000.0
4 NaN NaN 55days 3000.0
Використання DataFrame.append() для об’єднання двох DataFrames
Крім того, ви можете використовувати метод pandas.DataFrame.append() для об’єднання DataFrame в рядки. Для E.x df.append(df1) додає df1 до df DataFrame.
import pandas as pd
df = pd.DataFrame({'Courses': ["Spark","PySpark","Python","pandas"],
'Fee' : [20000,25000,22000,24000]})
df1 = pd.DataFrame({'Courses': ["Pandas","Hadoop","Hyperion","Java"],
'Fee': [25000,25200,24500,24900]})
# Using DataFrame.append() to concat Two DataFrames
df2 = df.append(df1)
print(df2)
Поля нижче виходу:
Courses Fee
0 Spark 20000
1 PySpark 25000
2 Python 22000
3 pandas 24000
0 Pandas 25000
1 Hadoop 25200
2 Hyperion 24500
3 Java 24900