首页 > 解决方案 > 如何在 Pandas 的同一行中删除重复值?

问题描述

我在 pandas 中合并了 2 个 DataFrame,它们都包含相同的列,但在某些行上具有不同的值。例如:

df1:
     A   B
     1   x
     2   y 
     3   z
df2: A   B
     1   x, y
     2   y, x, z
     4   z
df = pd.merge(df1, df2, how='inner', on=['A']

我期待一个像这样组合行的输出:

df:
    A   B
    1   x, y
    2   x, y, z 

但相反,我得到了这样的东西:

df:
    A   B_x   B_y
    1   x     x, y
    2   y     y, x, z

有什么方法可以让我得到我想要的输出吗?我知道我可以将 B_x 和 B_y 合并到一个新列中,然后删除 B_x 和 B_y 列,但输出与我想要的不同:

df['B'] = df['B_x'] +', '+ df[B_y']

df.drop(columns=['B_x', 'B_y']

#The output then will look like this:
df:
    A   B
    1   x, x, y
    2   y, x, y, z 

如果我像这样组合这些列,有什么方法可以从同一行删除重复的值?或者任何方式来获得像我一开始就想要的输出?对不起,如果答案太明显,但我是使用熊猫的新手(而且在编程方面也没有那么经验),但如果你能回答我,那将非常有帮助。谢谢!

标签: pythonpandas

解决方案


用于suffixes在左侧和右侧添加重叠列名的后缀并删除重叠列。

(
    pd.merge(df1, df2, how='inner', on=['A'], suffixes=("_x", ""))
        .drop(columns=["B_x"])
)

   A        B
0  1     x, y
1  2  y, x, z

推荐阅读