pd.merge()与pd.concat()的使用

举报
Python新视野 发表于 2021/09/10 01:18:07 2021/09/10
【摘要】 merge()的使用: 使用场景:两个DataFrame中某列或多列列名相同 dic1 = {'name':['李四', '王五', '赵六'], 'age':[12, 13, 14]} d...

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
'''

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

合并方式how = ‘inner’(默认),类似于取交集

on:用于连接的列名,若不指定则以两个Dataframe的列名的交集作为连接键

merge_df = pd.merge(df1, df2, on='name', how = "inner")
'''
  name  age class
0   李四   12    A2
1   王五   13    A3
'''

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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
'''

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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
'''

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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
'''

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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
'''

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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
'''

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

注意: 此时的列名被重置,重置的原因就是ignore_index=True,当我们对列进行操作时,一般就需要重置索引。


文章来源: blog.csdn.net,作者:Dream丶Killer,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_43965708/article/details/110821733

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。