python - 按索引连接 n 个数据帧
问题描述
我正在尝试pd.DataFrames
沿列轴合并几个,使用索引删除重复项(A 和 B 来自由不同谓词过滤的同一源“表”,我正在尝试重新组合)。
A = pd.DataFrame({"values": [1, 2]}, pd.MultiIndex.from_tuples([(1,1),(1,2)], names=('l1', 'l2')))
B = pd.DataFrame({"values": [2, 3, 2]}, pd.MultiIndex.from_tuples([(1,2),(2,1),(2,2)], names=('l1', 'l2')))
pd.concat([A,B]).drop_duplicates()
失败,因为它忽略了值的索引和重复数据删除,因此它删除了索引项 (2,2)
pd.concat([A.reset_index(),B.reset_index()]).drop_duplicates(subset=('l1', 'l2')).set_index(['l1', 'l2'])
做我想做的事,但我觉得应该有更好的方法。
解决方案
你可以做一个简单的concat
过滤掉重复使用index.duplicated
df1 = pd.concat([A,B])
df1[~df1.index.duplicated()]
Out[123]:
values
l1 l2
1 1 1
2 2
2 1 3
2 2
推荐阅读
- design-patterns - 用一个真实的例子来理解“观察者模式”
- botframework - 使用任务模块显示 Web 框架有困难 - Microsoft Bot Framework
- sql - Ignition 中的 SQL where 子句(带条件)帮助
- javascript - 如何正确地将其绑定到 Javascript 中的 getter/setter
- java - 我怎样才能只将特定模块部署到我的远程存储库?
- ios - SceneKit 在 Xcode 12 中不会填满屏幕
- macos - 如何将 Electron 应用发布到 Mac 应用商店?
- javascript - JavaScript 确认 OK 按钮不调用服务器端方法
- php - 从特定用户中删除所有用户 wordpress 功能
- laravel - 如何覆盖 Laravel Auth 的哈希方法?