python 中数据的合并问题:数组类型的合并,numpy 中合并用 np.concatenate,注意其中的中括号。
np.concatenate([arr1, arr2])
其中 arr1,arr2 为 numpy.ndarray 类型.
当不指定 axis 时,默认为 0,为纵向合并。
当指定 axis 时,axis 为 1 时,为横向合并
- ```np.concatenate([arr1, arr2], axis=1)```ex: arr1 = [[8 9 7 9] [6 6 8 6] [9 5 1 8]] arr2 = [[4 1 0 4] [1 7 5 2] [6 4 5 1]]```np.concatenate([arr1, arr2])``` 为array([[3, 9, 7, 6], [4, 6, 9, 9], [1, 8, 8, 5], [2, 7, 2, 8], [9, 8, 0, 6], [9, 1, 4, 8]]) ```np.concatenate([arr1, arr2], axis=1)``` 为array([[3, 9, 7, 6, 2, 7, 2, 8], [4, 6, 9, 9, 9, 8, 0, 6], [1, 8, 8, 5, 9, 1, 4, 8]])
二. Series 的合并
Pandas 中合并 Series 合并用 pd.concat
- pd.concat([ser_obj1, ser_obj2, ser_obj3])
同样不指定 axis 为纵向合并,指定 axis=1 为横向合并
ex:
- ser_obj1 = pd.Series(np.random.randint(0, 10, 5), index=range(5))ser_obj2 = pd.Series(np.random.randint(0, 10, 4), index=range(4))ser_obj3 = pd.Series(np.random.randint(0, 10, 3), index=range(3))print ser_obj1print ser_obj2print ser_obj3
创建三个索引不重复的 Series
结果为:
- 0 91 22 53 74 1dtype: int320 41 92 93 3dtype: int320 41 82 8dtype: int32
进行合并
- pd.concat([ser_obj1, ser_obj2, ser_obj3])
结果为:
- 0 21 52 93 14 65 16 87 18 69 810 511 0dtype: int32
当指定 axis=1 时:
- pd.concat([ser_obj1, ser_obj2, ser_obj3], axis=1)
结果为:
- 0 1 20 2.0 NaN NaN1 5.0 NaN NaN2 9.0 NaN NaN3 1.0 NaN NaN4 6.0 NaN NaN5 NaN 1.0 NaN6 NaN 8.0 NaN7 NaN 1.0 NaN8 NaN 6.0 NaN9 NaN NaN 8.010 NaN NaN 5.011 NaN NaN 0.0
二. DataFrame 合并
- pd.concat([df_obj1, df_obj2])
不指定 axis 为纵向合并
指定 axis = 1 为横向合并
- pd.concat([df_obj1, df_obj2], axis=1)
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: