我是靠谱客的博主 俏皮溪流,最近开发中收集的这篇文章主要介绍03_10Pandas_数据合并concat,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

注意concat与merge的区别,concat是沿轴方向将多个对象合并到一起。

numpy 和 pandas里都有实现concat的函数与功能。

import numpy as np
import pandas as pd

NumPy的concat

# 创建两个DataFrame
arr1 = np.random.randint(0, 10, (3, 4))
arr2 = np.random.randint(0, 10, (3, 4))
print arr1
print arr2
[[6 5 2 1]
[9 4 2 0]
[1 6 0 2]]
[[3 8 1 5]
[3 2 1 9]
[2 8 4 8]]
# 调用.concatenate, 并将两个ndarray组成list传入,默认是纵向合并
print np.concatenate([arr1, arr2])
[[6 5 2 1]
[9 4 2 0]
[1 6 0 2]
[3 8 1 5]
[3 2 1 9]
[2 8 4 8]]
# 指定轴方向,axis=1时是横向合并
print np.concatenate([arr1, arr2], axis=1)
[[6 5 2 1 3 8 1 5]
[9 4 2 0 3 2 1 9]
[1 6 0 2 2 8 4 8]]

Series上的concat

index 没有重复的情况

# index 没有重复的情况
ser_obj1 = pd.Series(np.random.randint(0, 10, 5), index=range(0,5))
ser_obj2 = pd.Series(np.random.randint(0, 10, 4), index=range(5,9))
ser_obj3 = pd.Series(np.random.randint(0, 10, 3), index=range(9,12))
print ser_obj1
print ser_obj2
print ser_obj3
0
9
1
8
2
8
3
0
4
1
dtype: int64
5
7
6
5
7
8
8
0
dtype: int64
9
1
10
7
11
7
dtype: int64
# 调用.concat,并将两个DataFrame组成list传入,默认纵向合并
pd.concat([ser_obj1, ser_obj2, ser_obj3])
0
9
1
8
2
8
3
0
4
1
5
7
6
5
7
8
8
0
9
1
10
7
11
7
dtype: int64
# 设置为横向合并
print pd.concat([ser_obj1, ser_obj2, ser_obj3], axis=1)

0
1
2
0
9.0
NaN
NaN
1
8.0
NaN
NaN
2
8.0
NaN
NaN
3
0.0
NaN
NaN
4
1.0
NaN
NaN
5
NaN
7.0
NaN
6
NaN
5.0
NaN
7
NaN
8.0
NaN
8
NaN
0.0
NaN
9
NaN
NaN
1.0
10
NaN
NaN
7.0
11
NaN
NaN
7.0

index 有重复的情况

# index 有重复的情况
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_obj1
print ser_obj2
print ser_obj3
0
7
1
4
2
5
3
1
4
8
dtype: int64
0
3
1
6
2
8
3
2
dtype: int64
0
9
1
1
2
8
dtype: int64
# 合并后索引保持不变
print pd.concat([ser_obj1, ser_obj2, ser_obj3])
0
7
1
4
2
5
3
1
4
8
0
3
1
6
2
8
3
2
0
9
1
1
2
8
dtype: int64
# 相当于多个Series的内链接
print pd.concat([ser_obj1, ser_obj2, ser_obj3], axis=1, join='inner')

0
1
2
0
7
3
9
1
4
6
1
2
5
8
8

DataFrame上的concat

df_obj1 = pd.DataFrame(np.random.randint(0, 10, (3, 2)), index=['a', 'b', 'c'],
columns=['A', 'B'])
df_obj2 = pd.DataFrame(np.random.randint(0, 10, (2, 2)), index=['a', 'b'],
columns=['C', 'D'])
print df_obj1
print df_obj2

A
B
a
2
0
b
5
0
c
4
9
C
D
a
4
7
b
9
9
print pd.concat([df_obj1, df_obj2])

A
B
C
D
a
2.0
0.0
NaN
NaN
b
5.0
0.0
NaN
NaN
c
4.0
9.0
NaN
NaN
a
NaN
NaN
4.0
7.0
b
NaN
NaN
9.0
9.0
print pd.concat([df_obj1, df_obj2], axis=1)

A
B
C
D
a
2
0
4.0
7.0
b
5
0
9.0
9.0
c
4
9
NaN
NaN

注:部分例子来自于小象学院Robin课程

最后

以上就是俏皮溪流为你收集整理的03_10Pandas_数据合并concat的全部内容,希望文章能够帮你解决03_10Pandas_数据合并concat所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部