概述
沿着 横轴 或 纵轴,将多个对象连接到一起
concat()
语法
concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False, copy=True)
参数
objs:需要连接的对象集合,一般是列表或字典;
axis:指定轴,默认为0。0表示横轴,1表示纵轴;
join:值为
outer或inner。默认为outer,合并后,如果没有值就显示NaN。为inner时,合并后,没有值就不舍弃掉。参见例子;join_axes=[]:指定自定义的索引;
keys=[]:创建层次化索引;
ignore_index:是否重建索引,默认为False。为True时表示重建索引
例子1
将 多个 一维 数组,拼接成 1个 一维 数组,默认不 重建索引
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
s1=pd.Series([1,2,3])
s2=pd.Series([10,20])
s3=pd.Series(['a','b','c'])
r=pd.concat([s1,s2,s3])
print(r)
执行结果如下:
0 1
1 2
2 3
0 10
1 20
0 a
1 b
2 c
注意观察 第一列 是 列索引,列索引没有重新排列,还是沿用之前的。
例子2
将 多个 一维 数组,拼接成 1个 一维 数组,并 重建索引
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
s1=pd.Series([1,2,3])
s2=pd.Series([10,20])
s3=pd.Series(['a','b','c'])
r=pd.concat([s1,s2,s3],ignore_index=True)
print(r)
执行结果如下:
0 1
1 2
2 3
3 10
4 20
5 a
6 b
7 c
dtype: object
注意观察 第一列 是 列索引,列索引 重新排列 了
例子3
将 多个 一维 数组,拼接成 1个 二维 数组
缺少数据时,显示NaN
s1=pd.Series([1,2,3])
s2=pd.Series([10,20])
s3=pd.Series(['a','b','c'])
r=pd.concat([s1,s2,s3],axis=1)
print(r)
执行结果如下:
0 1 2
0 1 10.0 a
1 2 20.0 b
2 3 NaN c
注意观察结果,当缺少数据时,显示NaN
例子4
将 多个 一维 数组,拼接成 1个 二维 数组,缺少数据时,就舍弃
s1=pd.Series([1,2,3])
s2=pd.Series([10,20])
s3=pd.Series(['a','b','c'])
r=pd.concat([s1,s2,s3],axis=1,join='inner')
print(r)
执行结果如下:
0 1 2
0 1 10 a
1 2 20 b
注意观察结果,当缺少数据时,就舍弃掉了
例子5
随机生成 2个 一维 数组,然后拼接成 1个 二维 数组
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
x_data = np.arange(-1, 1, 0.02, dtype=np.float32)
y_true = x_data+ np.random.normal(0, 0.1, 100)
# print(len(x_data))
# print(y_true)
x=pd.Series(x_data)
y=pd.Series(y_true)
df=pd.concat([x,y],axis=1)
# 绘制图像
plt.scatter(df['x'],df['y'])
#显示
plt.show()
例子6
随机生成2个二维数组,然后拼接成一个二维数组
#coding=utf-8
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
x_data = np.arange(-1, 1, 0.02, dtype=np.float32).reshape((100, 1))
y_true = x_data+ np.random.normal(0, 0.1, 100).reshape((100, 1))
df1=pd.DataFrame(x_data)
df2=pd.DataFrame(y_true)
# print(df1)
df=pd.concat([df1,df2],axis=1)
df.columns=['x','y']
print(df)
plt.scatter(df['x'],df['y'])
#显示
plt.show()