Pandas присоединить суффикс силы DataFrame?

Как заставить суффикс слияния или объединения. Я понимаю, что можно обеспечить его, если есть столкновение, но в моем случае я объединяю df1 с df2, который не вызывает какого-либо столкновения, но затем снова сливается с df2, который использует суффиксы, но я бы предпочел для каждого слияния иметь суффикс, потому что он запутывается, если я делаю разные комбинации, как вы могли себе представить.

Ответ 1

Вы можете заставить суффикс для фактического DataFrame:

In [11]: df_a = pd.DataFrame([[1], [2]], columns=['A'])

In [12]: df_b = pd.DataFrame([[3], [4]], columns=['B'])

In [13]: df_a.join(df_b)
Out[13]: 
   A  B
0  1  3
1  2  4

Добавляя к нему имена столбцов:

In [14]: df_a.columns = df_a.columns.map(lambda x: str(x) + '_a')

In [15]: df_a
Out[15]: 
   A_a
0    1
1    2

Теперь объединениям не потребуется корректировка суффиксов, независимо от того, сталкиваются они или нет:

In [16]: df_b.columns = df_b.columns.map(lambda x: str(x) + '_b')

In [17]: df_a.join(df_b)
Out[17]: 
   A_a  B_b
0    1    3
1    2    4

Ответ 2

Pandas merge придаст новым столбцам суффикс, если уже есть столбец с тем же именем. Когда мне нужно заставить новые столбцы с суффиксом, я создаю пустой столбец с именем столбца, который я хочу присоединиться.

df["colName"] = "" #create empty column 
df.merge(right = "df1", suffixes = ("_a","_b"))

Вы можете позже сбросить пустой столбец.

Вы можете сделать то же самое для нескольких столбцов или для каждого столбца в файле df.columns.values ​​

Ответ 3

Это то, что я использовал для pandas.merge двух DataFrames и принудительного суффикса:

def merge_force_suffix(left, right, **kwargs):
    on_col = kwargs['on']
    suffix_tupple = kwargs['suffixes']

    def suffix_col(col, suffix):
        if col != on_col:
            return str(col) + suffix
        else:
            return col

    left_suffixed = left.rename(columns=lambda x: suffix_col(x, suffix_tupple[0]))
    right_suffixed = right.rename(columns=lambda x: suffix_col(x, suffix_tupple[1]))
    del kwargs['suffixes']
    return pd.merge(left_suffixed, right_suffixed, **kwargs)

Ответ 4

Начиная с версии 0.24.2 для панд вы можете добавить суффикс к именам столбцов в DataFrame, используя метод add_suffix.

Это делает команду слияния в одну строку с принудительным суффиксом более терпимой, например:


df_merged = df1.merge(df2.add_suffix('_2'))