1.记录合并
记录合并是指将两个结构相同的数据框合并成一个数据框,也就是在一个数据框中追加另一个数据框的数据记录。
1.1 concat 函数
函数说明:concat方法相当于数据库中的全连接(union all),它不仅可以指定连接的方式(outer join 或 inner join),还可以指定按照某个轴进行连接。与数据库不同的是,它不会去重,但可以使用drop_duplicates方法达到去重的效果。
命令格式:
concat([dataFrame1, dataFrame2,…], index_ingore=False)
参数说明:dataFrame1 表示数据框
返回值:DataFrame。
参数说明:index_ingore=False(表示记录的索引不延续),index_ingore=True(表示记录的索引可延续)
示例:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0, 20, (5, 2)), columns=['A', 'B'])
print(df)
print("-----")
data = [df[0:2], df[3:]]
print(pd.concat(data, ignore_index=False))
print("-----")
print(pd.concat(data, ignore_index=True))
返回:
A B
0 6 13
1 19 2
2 12 18
3 1 0
4 11 9
-----
A B
0 6 13
1 19 2
3 1 0
4 11 9
-----
A B
0 6 13
1 19 2
2 1 0
3 11 9
1.2 append 函数
df.append(df2, index_ignore=True) # 把df2追加到df上,index直接延续
参数说明:index_ingore=False(表示记录的索引不延续),index_ingore=True(表示记录的索引可延续)
示例:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0, 20, (3, 2)), columns=['A', 'B'])
print(df)
print("-----")
narry = np.random.randint(0, 20, (2, 2))
data = pd.DataFrame(narry, columns=['A', 'B'])
print(df.append(data, ignore_index=True))
返回:
A B
0 18 12
1 3 12
2 6 11
-----
A B
0 18 12
1 3 12
2 6 11
3 12 8
4 9 15
2.字段合并
字段合并是指将同一个数据框中的不同列进行合并,形成新的列。其命令如下:
pd.merge( left, right, how="inner", on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=("_x", "_y"), copy=True, indicator=False, validate=None, )
参数说明:
参数 | 说明 |
left |
|
right |
|
how | 连接方式:inner、left、right、outer,默认为 inner |
on | 用于连接的列名 |
left_on | 左表用于连接的列名 |
right_on | 右表用于连接的列名 |
Left_index | 是否使用左表的行索引作为连接键,默认为False |
Right_index | 是否使用右表的行索引作为连接键,默认为False |
sort | 默认为False,将合并的数据进行排序 |
copy | 默认为True。总是将数据复制到数据结构中,设置为False可以提高性能 |
suffixes | 存在相同列名时在列名后面添加的后缀,默认为(’_x’, ‘_y') |
indicator | 显示合并数据中数据来自哪个表 |
示例1:
from pandas import DataFrame
import pandas as pd
# 默认以重叠的列名当做链接键
df1 = DataFrame({'key':['a','b','c'], 'data1':range(3)})
df2 = DataFrame({'key':['a','b','c'], 'data2':range(3)})
pd.merge(df1, df2)
结果:
示例2:
# 多键连接时将连接键组成列表传入
right=DataFrame({'key1':['foo','foo','bar','bar'],
'key2':['one','one','one','two'],
'lval':[4,5,6,7]})
left=DataFrame({'key1':['foo','foo','bar'],
'key2':['one','two','one'],
'lval':[1,2,3]})
right=DataFrame({'key1':['foo','foo','bar','bar'],
'key2':['one','one','one','two'],
'lval':[4,5,6,7]})
pd.merge(left,right,on=['key1','key2'],how='outer')
结果:
参考:https://blog.csdn.net/gdkyxy2013/article/details/80785361