首页 > 其他分享 >48-50. 数据合并,一对一,多对一,多对多

48-50. 数据合并,一对一,多对一,多对多

时间:2022-11-20 21:45:52浏览次数:35  
标签:145 48 一对一 df1 50 pd 134 msb1003 msb1001

 

 

 

 

 #数据合并一对一

#相同的列进行合并 
import pandas as pd 
df1=pd.read_excel('student1.xlsx')
df2=pd.read_excel('student2.xlsx') 
#dfl #测试数据读取 
#数据合并 
new_df=pd.merge(df1,df2,on='编号')
print(new_df)
编号_x  语文  数学  英语   编号_y  体育
0  msb1001   145   150   134  msb1001  35.4
1  msb1002   146   145   143  msb1002  23.5
2  msb1003   150   134   135  msb1003  35.4
#数据合并后去掉重复数据
pd.set_option ( 'display.unicode.east_asian_width', True)
df1=pd.read_excel('student1.xlsx')
df2=pd.read_excel('student2.xlsx') 
#how='left' 以df1表长短为准,how='right' 以df1表长短为准,没有的值补充NaN
#left,right对应outer,inner。通用
new_df=pd.merge(df1,df2,how='left',on='编号') #去掉相同的 编号y 列
print(new_df)
编号  语文  数学  英语  体育
0  msb1001   145   150   134  35.4
1  msb1002   146   145   143  23.5
2  msb1003   150   134   135  35.4

##多对一合并 

#多对一合并 
import pandas as pd 
pd.set_option ( 'display.unicode.east_asian_width', True)
df1=pd.DataFrame({ '编号': ['msb1001','msb1002','msb1003'], 
                  '姓名':['张三','李四','王五']}) 
df2=pd.DataFrame ({ '编号': ['msb1001','msb1001','msb1003'], 
                    '语文': [145, 134, 146], 
                    '数学': [149, 132, 150], 
                    '英语':[123, 134, 143], 
                    '月份':['1月','2月','1月'] }) 
                  
#多对一的数据合并 
new_df=pd.merge(df1,df2,on='编号') 
print(new_df)
 编号  姓名  语文  数学  英语 月份
0  msb1001  张三   145   149   123  1月
1  msb1001  张三   134   132   134  2月
2  msb1003  王五   146   150   143  1月

##多对多的数据合并 

#多对多的数据合并 
import pandas as pd 
df1=pd.DataFrame ({'编号': ['msb1001','msb1002','msb1003','msb1003','msb1003'], 
                    '语文': [145, 134, 143, 145, 147]}) 
df2=pd. DataFrame ( {'编号': ['msb1001','msb1002', 'msb1003','msb1001','msb1001'], 
                     '体育': [34.5,28.4,39.6, 34.6,45.5]}) 
new_df=pd. merge(df1, df2) 
print(new_df)
编号  语文  体育
0  msb1001   145  34.5
1  msb1001   145  34.6
2  msb1001   145  45.5
3  msb1002   134  28.4
4  msb1003   143  39.6
5  msb1003   145  39.6
6  msb1003   147  39.6

 

标签:145,48,一对一,df1,50,pd,134,msb1003,msb1001
From: https://www.cnblogs.com/988MQ/p/16909629.html

相关文章

  • CF48G Galaxy Union
    CF48GGalaxyUnion给定一棵基环树,求每个点到其他点的最小距离之和。\(n\leq2\times10^5\)。对于在环上的点和在树上的点分开处理。设在环上的点集为\(H\),先求出......
  • Django ORM 多表操作:一对一、一对多、多对多的增删改,基于对象/双下划线的跨表查询
    DjangomodelORM数据表相关操作分析思路,创建数据表对于表操作,表之间的关联关系,必须理解他们之间的关系,对于编程很重要。可以看看映射关系、外键和relationship查询,至少明......
  • 绿色2048
    绿色2048 最近2048小游戏非常火。 做了一个,可以通过以下链接下载或通过附件下载,安装到android手机即可。​​http://www.eoeshop.com:50057/apk/shuzi.apk​​ 说明;绿色......
  • 一次启动失败引发的思考:-server -XX:PermSize=2048M -XX:MaxPermSize=4096m
    Tomcat启动参数启动项目时,由于项目比较大,无法正常启动,报异常:java.lang.OutOfMemoryError:PermGenspace,在idea中设置VMoptions为:-server-XX:PermSize=2048M-XX:MaxPer......
  • leetcode-507-easy
    PerfectNumberAperfectnumberisapositiveintegerthatisequaltothesumofitspositivedivisors,excludingthenumberitself.Adivisorofanintegerx......
  • leetcode-506-easy
    RelativeRanksYouaregivenanintegerarrayscoreofsizen,wherescore[i]isthescoreoftheithathleteinacompetition.Allthescoresareguaranteedt......
  • AtCoder Regular Contest 150补题
    AtCoderRegularContest150A.Continuous1知识点:简单题复杂度:\(O(n)\)当一个区间合法,那么必定区间长度为k,并且区间内无0,并且1的个数等于所有的1的总和这个使用个......
  • ARC150D
    首先由于期望的线性性,考虑对每个点分别计算它的期望操作次数。然后设当前考虑的点为\(u\),那么只用关注根节点到\(u\)的链上的点。对这条链上的操作满足以下两个性质:......
  • #yyds干货盘点# LeetCode 腾讯精选练习 50 题:2 的幂
    题目:给你一个整数n,请你判断该整数是否是2的幂次方。如果是,返回true;否则,返回false。如果存在一个整数x使得 n==2x,则认为n是2的幂次方。 示例1:输入:n=1输......
  • LTC1861HMS#TRPBF LTC1861HMS模数转换器 12 bit 250ksps ADC
    LTC1860/LTC1861是12位A/D转换器,提供MSOP和SO-8包,并在单个5V电源上工作。在250ksps时,电源电流只有850μA。由于LTC1860/LTC1861在转换之间自动降低到典型的1nA电源电流,所......