merge()的使用:
使用场景:两个DataFrame中某列或多列列名相同
dic1 = {'name':['李四', '王五', '赵六'], 'age':[12, 13, 14]}
dic2 = {'name':['张三', '李四', '王五'], 'class':['A1', 'A2', 'A3']}
df1 = pd.DataFrame(dic1)
df2 = pd.DataFrame(dic2)
'''
name age
0 李四 12
1 王五 13
2 赵六 14
name class
0 张三 A1
1 李四 A2
2 王五 A3
'''
合并方式how = ‘inner’(默认),类似于取交集
on:用于连接的列名,若不指定则以两个Dataframe的列名的交集作为连接键
merge_df = pd.merge(df1, df2, on='name', how = "inner")
'''
name age class
0 李四 12 A2
1 王五 13 A3
'''
how = ‘outer’,类似于取并集
merge_df = pd.merge(df1, df2, on='name', how = "outer")
'''
name age class
0 李四 12.0 A2
1 王五 13.0 A3
2 赵六 14.0 NaN
3 张三 NaN A1
'''
how = ‘left’(‘right’),类似于数据库中的左连接、右连接
merge_df = pd.merge(df1, df2, on='name', how = "left")
'''
name age class
0 李四 12 A2
1 王五 13 A3
2 赵六 14 NaN
'''
merge_df = pd.merge(df1, df2, on='name', how = "right")
'''
name age class
0 张三 NaN A1
1 李四 12.0 A2
2 王五 13.0 A3
'''
concat()的使用:
常用参数
objs:series、dataframe等构成的序列
axis:1轴,0轴(默认)
join:outer默认,可选inner
ignore_index:默认False,即不重置dataframe的索引
sort:默认False
dic1 = {'name':['李四', '王五', '赵六'], 'age':[12, 13, 14]}
dic2 = {'name':['张三', '李四', '王五'], 'class':['A1', 'A2', 'A3']}
df1 = pd.DataFrame(dic1)
df2 = pd.DataFrame(dic2)
'''
name age
0 李四 12
1 王五 13
2 赵六 14
name class
0 张三 A1
1 李四 A2
2 王五 A3
'''
join = ‘outer’
0轴:纵轴,行的增加或减少
new_df = pd.concat([df1, df2], ignore_index=True, join='outer',axis=0)
'''
name age class
0 李四 12.0 NaN
1 王五 13.0 NaN
2 赵六 14.0 NaN
3 张三 NaN A1
4 李四 NaN A2
5 王五 NaN A3
'''
join = ‘outer’
1轴:横轴,列的增加或减少
new_df = pd.concat([df1, df2], ignore_index=True, join='outer',axis=1)
'''
0 1 2 3
0 李四 12 张三 A1
1 王五 13 李四 A2
2 赵六 14 王五 A3
'''
注意: 此时的列名被重置,重置的原因就是ignore_index=True
,当我们对列进行操作时,一般就需要重置索引。