pandas - 比较熊猫中具有不同形状的两个不同数据框的两列
问题描述
我有两个具有相同列标题的不同数据框,我想比较列内容并删除数据框 A 中存在但数据框 B 中不存在的值,例如,
df1 = pd.DataFrame([('1', 'A', 389.0, 1.2),
('2', 'B', 24.0, 1.4),
('3', 'C', 80.5, 2.2),
('4', 'D', 13.4, 5)],
columns=['items', 'Chambers', 'V','I'],
)
df2 = pd.DataFrame([('1', 'A', 389.0, 1),
('2', 'E', 24.0, 2.1),
('3', 'C', 90.5,1.8),
('4', 'B', 10, 0.7),
('5','D',80.5,7)],
columns=['items', 'Chambers', 'V','I'],
)
我想删除 df2 中的值“D”和“E”并保留所有其他值。我希望这很清楚:)
提前致谢!
解决方案
看起来 Chambers = B 与 Chambers = D 的情况相同,因此很难准确理解您要做什么。在您只想从一个 DataFrame 中获取另一个合并中的行的情况下,可以选择。merge 在两个 DataFrame 之间创建一个包含相关数据的组合 DataFrame。
例如:
df2.merge(df1, how='inner', left_on=['items', 'Chambers'], right_on=['items', 'Chambers'])
为您提供一个组合的 DataFrame,其中 df1 和 df2 之间的“items”和“Chambers”都匹配。
items Chambers V_x I_x V_y I_y
0 1 A 389.0 1.0 389.0 1.2
1 3 C 90.5 1.8 80.5 2.2
或者,如果您只想要 Chambers 匹配的行:
df2.merge(df1, how='inner', left_on=['Chambers'], right_on=['Chambers'])
给出:
items_x Chambers V_x I_x items_y V_y I_y
0 1 A 389.0 1.0 1 389.0 1.2
1 3 C 90.5 1.8 3 80.5 2.2
2 4 B 10.0 0.7 2 24.0 1.4
3 5 D 80.5 7.0 4 13.4 5.0
如果那不完全是你的意思,你能提供一个你预期结果的例子吗?
推荐阅读
- reactjs - 如何访问嵌套标签内的 react-spring 变量
- javascript - 如何使用 flexbox 将所有元素保留在容器中?
- vue.js - 在更改窗口的 ThreeJS VueJS 应用程序中获得正确的鼠标悬停交互
- r - 如何在ggplot中按百分比排列图例并将其他人留在最后
- node.js - mongodb连接在nodejs中没有得到解决
- javascript - 获取类似于 console.error() 的跟踪并生成错误消息
- javascript - vue:如何过滤数组中的数据
- c# - 自定义属性以缓存 C# 中的只读属性值
- typescript - 运行 ts-mocha 时找不到模块“模块名称”
- python - 在python中检查字符串中的前缀字符的代码