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