python - 比较列不同的数据框
问题描述
我有两个要合并的 DataFrame,但我更愿意检查两个 dfs 中存在的一列在每一行中是否具有完全相同的值。
对于一般合并,我在评论中尝试了几种解决方案,您看到了形状
df = pd.concat([df_b, df_c], axis=1, join='inner') # (245131, 40)
df = pd.concat([df_b, df_c], axis=1).reindex(df_b.index) # (245131, 40)
df = pd.merge(df_b, df_c, on=['client_id'], how='inner') # (420707, 39)
df = pd.concat([df_b, df_c], axis=1) # (245131, 40)
原来的 df_c(245131, 14)
和 df_b 是(245131, 26)
By 我假设列 client_id 具有确切的值,因为在三种方法中我的形状为 245131 行。
- 我想比较 new_df 中的 client_ids,用 .loc 尝试过,但没有成功。也尝试过
df.rename(columns={ df.columns[20]: "client_id_1" }, inplace=True)
,但它重命名了两列
我试过了
df_test = df_c.client_id
df_test.append(df_b.client_id, ignore_index=True)
但我只收到一个索引和一个 client_id 列,但形状显示 245131 行。
- 如果我可以确定这些值完全相同,我应该将 client_id 放在一个 df 中,然后再进行 concat/merge 吗?这样我就得到了 (245131, 39) 的正确形状
是否有用于合并或比较 read_csv 的 mangle_dupe_cols 命令?
解决方案
克里斯,如果您想检查 2 个单独数据框的 2 列是否完全相同,您可以尝试以下操作:
tuple(df1['col'].values) == tuple(df2['col'].values)
这应该返回一个布尔值
如果要合并 2 个数据框,请确保您感兴趣的列的所有行都具有唯一值,因为重复会导致添加行
如果要沿轴连接数据框,请使用 concat
推荐阅读
- javascript - React.JS 奇怪的错误:按钮随滚动而移动
- python - 从python中的rss提要中提取以关键字/短语开头的句子
- html - UI设计(如何让它看起来很专业)
- excel - FindNext - VBA 代码测试正确,但 Excel 中的公式不起作用
- python-3.x - 从numpy数组中删除元素?
- java - 当我从服务器获取 html 文件或调用任何服务时,响应在 chrome 网络选项卡中包含红点,导致 HTML/JSON 中断
- reactjs - 如何使用 webpack 配置 create-react-app 以及它是如何运行测试的?
- forms - 使用 GlobalKey 进行验证
在 Flutter Stepper 小部件的各个步骤中即使输入正确也会返回 false - c# - Unity 中的持续射速
- angular - 从嵌套组件中获取 url 参数