pandas加入DataFrame强制后缀?

stg*_*scc 20 python pandas

如何在合并或连接上强制使用后缀.我知道如果碰撞有可能提供一个,但在我的情况下我将df1与df2合并,这不会引起任何碰撞但是再次合并使用后缀的df2但是我希望每个合并都有一个后缀因为如果我按照你的想象做不同的组合会让人感到困惑.

And*_*den 20

您可以在实际的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
Run Code Online (Sandbox Code Playgroud)

通过附加列的名称:

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
Run Code Online (Sandbox Code Playgroud)

现在连接不需要后缀校正,无论它们是否发生碰撞:

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
Run Code Online (Sandbox Code Playgroud)

  • 这将是大熊猫合并的一个很好的补充. (3认同)

Ren*_*tha 14

从 pandas 0.24.2 版开始,您可以使用add_suffix方法为 DataFrame 上的列名添加后缀。

这使得带有 force-suffix 的单行合并命令更容易忍受,例如:


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

Run Code Online (Sandbox Code Playgroud)

  • 但是在合并之前你会遇到列名称更改的问题 (2认同)

the*_*ter 8

当已经有一个同名的列时,Pandas 合并会给新列一个后缀,当我需要强制使用后缀的新列时,我创建一个空列,其中包含我想要加入的列的名称。

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

您可以稍后删除空列。

您可以对多列或 df.columns.values 中的每一列执行相同操作