pandas-数据合并concat()

概述

沿着 横轴 或 纵轴,将多个对象连接到一起

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()

原文出处:/show_1EF3ivNIDeAe.html