需求:
两个excel表格有共同的一列A,第一个表格数据少,第二个表格数据多,我现在想根据表1的A列将表2中包含A列的内容提取出来; 简单说就是提取表格中指定的行
数据
表1
![c64967dd41ffd2441c998e324be1a7b4.png](https://i-blog.csdnimg.cn/blog_migrate/337484357a567324772a06288f20a010.jpeg)
表2
![065edfef2f952f205251e0e45515f6e5.png](https://i-blog.csdnimg.cn/blog_migrate/1ab4020f1950b06d8c0b8afd771f9d3f.jpeg)
以上数据完全是胡编乱造!
第一种实现方法 excel vlookup 函数
将表2复制到表1里
=VLOOKUP(B2,G2:I12,2,FALSE)
![9d6b2aa7f7aae1dd5cb5eef2d2ef52be.png](https://i-blog.csdnimg.cn/blog_migrate/debc5377db929449bf59dafdef8b3bca.jpeg)
- 第一个参数是想要提取的字段
- 第二个参数是数据表2的范围
- 第三个参数是提取数据表2的哪一列
- 第四个参数是TRUE或者FALSE,是否精确匹配
第二种实现方法 python 的 pandas 模块
代码
table_a = pd.read_excel("A.xlsx",sheet_name = "Sheet1",converts={'cityid':str})
table_b = pd.read_excel("B.xlsx",sheet_name = "Sheet1",converts={'cityid':str})
table_a.merge(right = table_b,how='left',left_on="cityname",right_on="cityname")
结果
cityid cityname GDP Population
0 1111 北京 200 500
1 1112 南京 500 248
2 1113 唐山 100 139
3 1114 保定 300 168
4 1115 苏州 450 547
5 1116 上海 260 625
6 1117 西安 750 758
或者将结果写到excel里
table_c = table_a.merge(right = table_b,how='left',left_on="cityname",right_on="cityname")
table_c.to_excel("C.xlsx",index=False)
以上代码参考简书文章 利用Python将vlookup自动化
第三种实现方法 R 语言
代码
df1<-read.table("clipboard",header=T)
df1
df2<-read.table("clipboard",header=T)
df2
df2[df2$cityname%in%df1$cityname,]
结果
> df1<-read.table("clipboard",header=T)
> df1
cityid cityname
1 1111 北京
2 1112 南京
3 1113 唐山
4 1114 保定
5 1115 苏州
6 1116 上海
7 1117 西安
> df2<-read.table("clipboard",header=T)
> df2
cityname GDP Population
1 北京 200 500
2 南京 500 248
3 唐山 100 139
4 保定 300 168
5 苏州 450 547
6 上海 260 625
7 西安 750 758
8 重庆 690 747
9 成都 345 625
10 常州 285 325
11 秦皇岛 175 145
> df2$cityname%in%df1$cityname
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE
> df2[df2$cityname%in%df1$cityname,]
cityname GDP Population
1 北京 200 500
2 南京 500 248
3 唐山 100 139
4 保定 300 168
5 苏州 450 547
6 上海 260 625
7 西安 750 758
自己之前一直没有搞明白R语言里如何根据指定内容提取行,这个应该是一种解决办法。
欢迎大家关注我的公众号 小明的数据分析笔记本