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两项的索引就是完全一样了。


推荐阅读