Как заставить суффикс слияния или объединения. Я понимаю, что можно обеспечить его, если есть столкновение, но в моем случае я объединяю df1 с df2, который не вызывает какого-либо столкновения, но затем снова сливается с df2, который использует суффиксы, но я бы предпочел для каждого слияния иметь суффикс, потому что он запутывается, если я делаю разные комбинации, как вы могли себе представить.
Pandas присоединить суффикс силы DataFrame?
Ответ 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'))