Pandas 比较Python中的两个数据帧&;R使用一个键变量
下面列出了两个数据帧Pandas 比较Python中的两个数据帧&;R使用一个键变量,pandas,dataframe,Pandas,Dataframe,下面列出了两个数据帧df1和df2 ID Age Weight 1 30 62 2 40 80 3 28 77 4 35 70 ID Age Weight 1 30 62 2 40 80 3 28 97 4 35 87 5 25 65 6 33 70 我想使用ID字段将df1中的权重变量与df2进行比较,我需要下面显示的差异 ID Weight_df1 Weight_df2 3 77 97 4
df1
和df2
ID Age Weight
1 30 62
2 40 80
3 28 77
4 35 70
ID Age Weight
1 30 62
2 40 80
3 28 97
4 35 87
5 25 65
6 33 70
我想使用ID
字段将df1
中的权重变量与df2
进行比较,我需要下面显示的差异
ID Weight_df1 Weight_df2
3 77 97
4 70 87
下面是R中的一种
tidyverse
方法,它将完成所有工作
library(dplyr)
library(purrr)
library(tidyr)
map_dfr(list(df1, df2), I, .id = "df") %>%
group_by(ID, Age, Weight) %>%
filter(n() == 1) %>%
group_by(ID) %>%
filter(n() > 1) %>%
pivot_wider(id_cols = "ID", values_from = "Weight", names_from = "df", names_prefix = "Weight_df")
# A tibble: 2 x 3
# Groups: ID [2]
ID Weight_df1 Weight_df2
<dbl> <dbl> <dbl>
1 3 77 97
2 4 70 87
库(dplyr)
图书馆(purrr)
图书馆(tidyr)
map_dfr(列表(df1,df2),I,.id=“df”)%>%
分组依据(ID、年龄、体重)%>%
筛选器(n()==1)%>%
分组依据(ID)%>%
过滤器(n()>1)%>%
枢轴(id\u cols=“id”、值来自于=“Weight”、名称来自于=“df”、名称前缀=“Weight\u df”)
#一个tibble:2x3
#组别:ID[2]
ID重量\u df1重量\u df2
1 3 77 97
2 4 70 87
数据
library(tibble)
df1 <- tribble(~ID, ~Age, ~Weight,
1, 30, 62,
2, 40, 80,
3, 28, 77,
4, 35, 70)
df2 <- tribble(~ID, ~Age, ~Weight,
1, 30, 62,
2, 40, 80,
3, 28, 97,
4, 35, 87,
5, 25, 65,
6, 33, 70)
库(TIBLE)
df1熊猫版,与以下部件一起使用:
R:这回答了你的问题吗?啊,我也有同样的想法,只是晚了一分钟:——)@QuangHoang我看得出来;)
(df1[['ID','Weight']].merge(df2[['ID','Weight']],on='ID',suffixes=('_df1','_df2'))
.query('Weight_df1!=Weight_df2'))
ID Weight_df1 Weight_df2
2 3 77 97
3 4 70 87