Day.5利用Pandas做数据处理(二)

数据合并

使用Join()合并,合并的方式是根据行和行进行合并。

# 使用join合并,着重关注的是 行的合并
import pandas as pd 
df1=pd.DataFrame({'Red':[1,3,5],'Green':[5,0,3]},index=list('abc'))
df2=pd.DataFrame({'Blue':[1,9,8],'Yellow':[6,6,7]},index=list('cde'))
print(df1)
print(df2)
'''
    Red  Green
a    1      5
b    3      0
c    5      3
    Blue  Yellow
c     1       6
d     9       6
e     8       7
'''
# 简单合并(默认是left左连接,以左侧df1为基础,连接右侧中index相同的行)
df3=df1.join(df2,how='left')
print(df3)
'''
   Red  Green  Blue  Yellow
a    1      5   NaN     NaN
b    3      0   NaN     NaN
c    5      3   1.0     6.0
'''

# 右连接:以左侧df2为基础,连接左侧df1中index相同的行
df4 = df1.join(df2,how='right')
print(df4)
'''
   Red  Green  Blue  Yellow
c  5.0    3.0     1       6
d  NaN    NaN     9       6
e  NaN    NaN     8       7
'''

# 外连接(左右两侧的index全连接,取并集)
df5 = df1.join(df2,how='outer')
print(df5)
'''
   Red  Green  Blue  Yellow
a  1.0    5.0   NaN     NaN
b  3.0    0.0   NaN     NaN
c  5.0    3.0   1.0     6.0
d  NaN    NaN   9.0     6.0
e  NaN    NaN   8.0     7.0
'''

# 合并多个DataFrame对象
df6 = pd.DataFrame({'Brown':[3,4,5],'White':[1,1,2]},index=list('aed'))
print(df6)
df7 = df2.join([df1,df6])
print(df7)
'''
    Brown  White
a      3      1
e      4      1
d      5      2
   Blue  Yellow  Red  Green  Brown  White
c     1       6  5.0    3.0    NaN    NaN
d     9       6  NaN    NaN    5.0    2.0
e     8       7  NaN    NaN    4.0    1.0
'''

merge()函数是列和列合并。

# 使用merge,着重关注的是列的合并
df1=pd.DataFrame({'名字':list('ABCDE'),'性别'['男','女','男','男','女'],'职称':['副教授','讲师','助教','教授','助教']},index=range(1001,1006))
print(df1)
'''
     名字 性别   职称
1001  A  男  副教授
1002  B  女   讲师
1003  C  男   助教
1004  D  男   教授
1005  E  女   助教
'''

df2=pd.DataFrame({'名字':list('ABDAX'),'课程':['C++','计算机导论','汇编','数据结构','马克思原理'],'职称':['副教授','讲师','教授','副教授','讲师']},index=[1001,1002,1004,1001,3001])
print(df2)
'''
     名字     课程   职称
1001  A    C++  副教授
1002  B  计算机导论   讲师
1004  D     汇编   教授
1001  A   数据结构  副教授
3001  X  马克思原理   讲师
'''

# merge默认根据左右对象中出现同名的列作为连接的键,且连接方式是how=’inner’内连接,内连接取两者交集
print(pd.merge(df1,df2))
'''
  名字 性别   职称     课程
0  A  男  副教授    C++
1  A  男  副教授   数据结构
2  B  女   讲师  计算机导论
3  D  男   教授     汇编
'''
# 指定列名合并,suffixes来设置重复列的名字
print(pd.merge(df1,df2,on='名字',suffixes=['_1','_2']))
'''
  名字 性别 职称_1  课程     职称_2
0  A  男  副教授    C++     副教授
1  A  男  副教授   数据结构  副教授
2  B  女   讲师  计算机导论  讲师
3  D  男   教授     汇编    教授
'''

# 左连接,根据左侧为准
print(pd.merge(df1,df2,how='left'))
'''
名字 性别   职称     课程
0  A  男  副教授    C++
1  A  男  副教授   数据结构
2  B  女   讲师  计算机导论
3  C  男   助教    NaN
4  D  男   教授     汇编
5  E  女   助教    NaN
'''

# 右连接,根据右侧为准
print(pd.merge(df1,df2,how='right'))
'''
  名字   性别   职称     课程
0  A    男  副教授    C++
1  A    男  副教授   数据结构
2  B    女   讲师  计算机导论
3  D    男   教授     汇编
4  X  NaN   讲师  马克思原理
'''

# 合并所有 取并集
print(pd.merge(df1,df2,how='outer'))
'''
  名字 性别   职称     课程
0  A    男  副教授    C++
1  A    男  副教授   数据结构
2  B    女   讲师  计算机导论
3  C    男   助教    NaN
4  D    男   教授     汇编
5  E    女   助教    NaN
6  X  NaN   讲师  马克思原理
'''

# 根据多个键进行连接
print(pd.merge(df1,df2,on=['职称','名字']))
'''
 名字 性别  职称     课程
0  A  男  副教授    C++
1  A  男  副教授   数据结构
2  B  女   讲师  计算机导论
3  D  男   教授     汇编
'''

多层索引

这里简单介绍一下多层索引,多层级索引,将指标进行分层,索引具有层级结构,可以使得高维度的数据进行降维。

先来学习一下Series对象创建多层索引,并对索引对象查询。

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

# Series创建多层索引
s = Series(np.random.randint(0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值