python - 如何在 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
如果我像这样组合这些列,有什么方法可以从同一行删除重复的值?或者任何方式来获得像我一开始就想要的输出?对不起,如果答案太明显,但我是使用熊猫的新手(而且在编程方面也没有那么经验),但如果你能回答我,那将非常有帮助。谢谢!
解决方案
用于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
推荐阅读
- java - Firebase - 检查 uid 子值是否在 Posts 节点中匹配,如果匹配,则将所有得分值相加并存储在 String 变量中
- c++ - c++ 中的强制转换是什么时候发生的,编译时间还是运行时间?
- typescript - array.sort(),可以不声明 0 值吗?
- javascript - 通过 Div id 生成画布图像
- c# - 如何将C#数据表传递给mysql的存储过程参数
- cakephp-3.0 - 如何设置别名而不是 id ,我需要 category_id 而不使用 forloop
- php - 使用 PHP Laravel 的网络爬虫
- synchronization - 在 Quorum 中,即使在导入块时,`eth.syncing` 也会给出 False
- asp.net - wordpress 和 asp.net mvc 的域相同
- c# - 如何将 XAML contentView 绑定到其背后的代码