python 文件数据合并(数据行不对应)( 二 )
那就眼睁睁的看着这种情况发生吗?
当然不是,解决的方法有两种:
第一种就是忽略这种索引,如果索引是这种没有实际意义的流水ID,那么我们可以让他们顺次的往下排列,从而避免重复,设置一个ignore_index即可实现。import pandas as pddf1 = pd.DataFrame({\u0026#39;A\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;A1\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;A2\u0026#39;},\u0026#39;B\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;B1\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;B2\u0026#39;}})df2 = pd.DataFrame({\u0026#39;A\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;A3\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;A4\u0026#39;},\u0026#39;B\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;B3\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;B4\u0026#39;}})print(df1)print(df2)print(pd.concat(, ignore_index=True)) A B1 A1 B12 A2 B2 A B1 A3 B32 A4 B4 A B0 A1 B11 A2 B22 A3 B33 A4 B4那如果我觉得原来的索引代表了实际意义,不能忽略呢?
别急,第二种方法就是利用多级索引的方式来保留原索引。import pandas as pddf1 = pd.DataFrame({\u0026#39;A\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;A1\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;A2\u0026#39;},\u0026#39;B\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;B1\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;B2\u0026#39;}})df2 = pd.DataFrame({\u0026#39;A\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;A3\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;A4\u0026#39;},\u0026#39;B\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;B3\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;B4\u0026#39;}})print(df1)print(df2)print(pd.concat(, keys=)) A B1 A1 B12 A2 B2 A B1 A3 B32 A4 B4 A Bx 1 A1 B1 2 A2 B2y 1 A3 B3 2 A4 B4还漏了一种情况,就是如果列名不完全一致应该如何处理?
我们继续看看在合并的过程中,列会出现什么现象。import pandas as pddf1 = pd.DataFrame({\u0026#39;A\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;A1\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;A2\u0026#39;},\u0026#39;B\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;B1\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;B2\u0026#39;},\u0026#39;C\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;C1\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;C2\u0026#39;}})df2 = pd.DataFrame({\u0026#39;B\u0026#39;:{\u0026#39;3\u0026#39;:\u0026#39;B3\u0026#39;,\u0026#39;4\u0026#39;:\u0026#39;B4\u0026#39;},\u0026#39;C\u0026#39;:{\u0026#39;3\u0026#39;:\u0026#39;C3\u0026#39;,\u0026#39;4\u0026#39;:\u0026#39;C4\u0026#39;},\u0026#39;D\u0026#39;:{\u0026#39;3\u0026#39;:\u0026#39;D3\u0026#39;,\u0026#39;4\u0026#39;:\u0026#39;D4\u0026#39;}})print(df1)print(df2)print(pd.concat()) A B C1 A1 B1 C12 A2 B2 C2 B C D3 B3 C3 D34 B4 C4 D4 A B C D1 A1 B1 C1 NaN2 A2 B2 C2 NaN3 NaN B3 C3 D34 NaN B4 C4 D4从结果中我们可以看出,我们这种默认的合并方式是对所有的输入列取并集,如果在某个位置上值缺失,则用NaN值来代替。
如果我们想换一种方式,对输入列取交集,这样就不会出现NaN值了。import pandas as pddf1 = pd.DataFrame({\u0026#39;A\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;A1\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;A2\u0026#39;},\u0026#39;B\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;B1\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;B2\u0026#39;},\u0026#39;C\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;C1\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;C2\u0026#39;}})df2 = pd.DataFrame({\u0026#39;B\u0026#39;:{\u0026#39;3\u0026#39;:\u0026#39;B3\u0026#39;,\u0026#39;4\u0026#39;:\u0026#39;B4\u0026#39;},\u0026#39;C\u0026#39;:{\u0026#39;3\u0026#39;:\u0026#39;C3\u0026#39;,\u0026#39;4\u0026#39;:\u0026#39;C4\u0026#39;},\u0026#39;D\u0026#39;:{\u0026#39;3\u0026#39;:\u0026#39;D3\u0026#39;,\u0026#39;4\u0026#39;:\u0026#39;D4\u0026#39;}})print(df1)print(df2)print(pd.concat(, join=\u0026#39;inner\u0026#39;)) A B C1 A1 B1 C12 A2 B2 C2 B C D3 B3 C3 D34 B4 C4 D4 B C1 B1 C12 B2 C23 B3 C34 B4 C4
推荐阅读
- “一部手机读云南”上线力争建成国家方志大数据中心西南中心
- 联合国大数据全球平台中国区域中心在杭州成立
- 银行的数据中心可以跳槽去互联网公司吗
- |大数据赋力 半个多月前拉客的“黑车”精准落网
- 怎样成为一名合格的Python程序员?
- python 爬虫,咋获得输入验证码之后的搜索结果
- 数据采集终端|
- 白皮书一般是政府发布的正式报告或文件,那么现在物联网、智慧城市等热门领域这么多企业发布的白皮书算咋回事呢
- 关于用phpfsocket 写Post, 模拟http 报文怎样写入要传输的处理数据
- hadoop中的mapreduce链接(mapreduce chaining)怎样避免中间文件的产生
