python 文件数据合并(数据行不对应)
用这个库(pandas )去合并
Merge, join, and concatenate
■网友
【python 文件数据合并(数据行不对应)】 这里我们讨论如何利用concat方法进行简单的数据拼接。import pandas as pdser1 = pd.Series(, index=)ser2 = pd.Series(, index=)ser = pd.concat()print(ser1)print(ser2)print(ser)1 A2 B3 Cdtype: object4 D5 E6 Fdtype: object1 A2 B3 C4 D5 E6 Fdtype: object
在这个例子中,我们简单的对Series进行了拼接,我们看到默认的情况是逐行进行合并操作,对DataFrame对象进行简单拼接也是一样。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;3\u0026#39;:\u0026#39;A3\u0026#39;,\u0026#39;4\u0026#39;:\u0026#39;A4\u0026#39;},\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;}})print(df1)print(df2)print(pd.concat()) A B1 A1 B12 A2 B2 A B3 A3 B34 A4 B4 A B1 A1 B12 A2 B23 A3 B34 A4 B4
通过这种方法,我们也是以逐行的方式对两个DataFrame进行了合并。
很自然的,相对于逐行进行合并,也可以按逐列的方式进行合并,类比之前讲过的,加上一个axis参数即可:import pandas as pdimport numpy as npdf1 = 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;C\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;C1\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;C4\u0026#39;},\u0026#39;D\u0026#39;:{\u0026#39;1\u0026#39;:\u0026#39;D1\u0026#39;,\u0026#39;2\u0026#39;:\u0026#39;D2\u0026#39;}})print(df1)print(df2)print(pd.concat(, axis=1)) A B1 A1 B12 A2 B2 C D1 C1 D12 C4 D2 A B C D1 A1 B1 C1 D12 A2 B2 C4 D2
上面的例子举得比较特殊,刻意设置了两个DataFrame数据的索引是不同的,如果恰好他们的索引相同,会不会出问题。
这个问题提的不错,Pandas中concat方法的一个很大的特点就是保留索引,合并后的结果里各行的索引与合并前的索引保持一致。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(pd.concat()) A B1 A1 B12 A2 B21 A3 B32 A4 B4
可以看到,结果并没有报错,而且确实是保留了合并前的索引。但是这并不是我们想看到的,因为这样一来,A1、A3两项的索引就是完全一样了。
推荐阅读
- “一部手机读云南”上线力争建成国家方志大数据中心西南中心
- 联合国大数据全球平台中国区域中心在杭州成立
- 银行的数据中心可以跳槽去互联网公司吗
- |大数据赋力 半个多月前拉客的“黑车”精准落网
- 怎样成为一名合格的Python程序员?
- python 爬虫,咋获得输入验证码之后的搜索结果
- 数据采集终端|
- 白皮书一般是政府发布的正式报告或文件,那么现在物联网、智慧城市等热门领域这么多企业发布的白皮书算咋回事呢
- 关于用phpfsocket 写Post, 模拟http 报文怎样写入要传输的处理数据
- hadoop中的mapreduce链接(mapreduce chaining)怎样避免中间文件的产生