抱歉,如果这是重复的请让我知道,我会很乐意删除。
我使用< code>merge合并R中的两个数据集。
age1 = c(5, 6, 7, 8, 10, 11)
fname1 = c('david','alan','ben', 'ben', 'richard', 'edd')
sname1 = c('albert','raymond','albert','pete','raymond', 'alan')
area1 = c('r','t','n','x','z','w')
df1 <- data.frame(age1, fname1, sname1, area1)
age2 = c(5, 9, 10, 3, 4, 0)
fname2 = c('david','alan','david', 'ben', 'richard', 'edd')
sname2 = c('albert','edd','albert','pete','raymond', 'alan')
area2 = c('w','z','x','n','t','r')
df2 = data.frame(age2, fname2, sname2, area2)
数据集1:
df1
age1 fname1 sname1 area1
1 5 david albert r
2 6 alan raymond t
3 7 ben albert n
4 8 ben pete x
5 10 richard raymond z
6 11 edd alan w
数据集2
df2
age2 fname2 sname2 area2
1 5 david albert w
2 9 alan edd z
3 10 david albert x
4 3 ben pete n
5 4 richard raymond t
6 0 edd alan r
我在< code>fname和< code>sname上合并:
matchkey <- merge(df1, df2, by.x = c("fname1", "sname1"), by.y = c("fname2", "sname2"))
View(matchkey)
输出:
> matchkey
fname1 sname1 age1 area1 age2 area2
1 ben pete 8 x 3 n
2 david albert 5 r 5 w
3 david albert 5 r 10 x
4 edd alan 11 w 0 r
5 richard raymond 10 z 4 t
但是,我想保留已合并的列。我该怎么做?我应该使用merge以外的东西吗?
预期产出:
fname1 sname1 age1 area1 fname2 sname 2age2 area2
1 ben pete 8 x ben pete 3 n
2 david albert 5 r david albert 5 w
3 david albert 5 r david albert 10 x
4 edd alan 11 w edd alan 0 r
5 richard raymond 10 z richard raymond 4 t
我试过看,但没有成功:
如何基于两列合并两个数据框?
组合两个数据帧,保留所有列
合并具有重复列的两个数据帧
非常感谢。
由于合并的列在内部连接时完全相同,或者数据帧之间完全匹配,所以只需将新列分配给剩余的列即可。您可以使用transform()
执行此操作。下面添加了outer()
与paste0
的组合,以检索所需的列顺序:
matchkey <- transform(merge(df1, df2, by.x = c("fname1", "sname1"),
by.y = c("fname2", "sname2")),
fname2 = fname1, sname2 = sname1)
ordercols <- c(outer(c("fname", "sname", "age", "area"), c(1:2), paste0))
matchkey <- matchkey[ordercols]
matchkey
# fname1 sname1 age1 area1 fname2 sname2 age2 area2
# 1 ben pete 8 x ben pete 3 n
# 2 david albert 5 r david albert 5 w
# 3 david albert 5 r david albert 10 x
# 4 edd alan 11 w edd alan 0 r
# 5 richard raymond 10 z richard raymond 4 t
问题内容: 我正在尝试使用两列来连接两个熊猫数据框: 但出现以下错误: 任何想法应该是正确的方法吗?谢谢! 问题答案: 尝试这个 https://pandas.pydata.org/pandas- docs/stable/reference/api/pandas.DataFrame.merge.html left_on:要在左侧DataFrame中加入的标签或列表或类似数组的字段名称。可以是Dat
问题内容: 我有两个数据框df1和df2。df1包含人的年龄信息,而df2包含人的性别信息。并非所有人都在里面df1或里面df2 我想有人民的性别的信息df1和设置NaN,如果我没有在这个信息df2。我尝试这样做,但是我保留了一些df2我不想要的信息。 问题答案: 使用map由创建人: merge左连接的替代解决方案: 如果需要通过多列映射(例如Year和Code),则需要merge左连接: 如果
问题内容: 我有2个数据框: restaurant_ids_dataframe 和 restaurant_review_frame 我想使用熊猫中的DataFrame.join()命令将这两个DataFrame加入一个单一的数据框中。 我尝试了以下代码行: 但是,当我尝试这样做时,出现以下错误: 我对熊猫很陌生,不知道就执行join语句而言我在做什么错。 任何帮助将非常感激。 问题答案: 您可以使
我有两个熊猫数据帧共享一个共同的列名。我想合并公共列名,但保留与第二个dataFrame中的所有不同列,其中公共列名称匹配。下面是两个数据帧的示例: 我希望预期的结果是: 也就是说,当列“A”匹配时,我希望保留I,J,K,L的行,并且不等于“NaN ”,对于DF1中的列也是如此。 我已经尝试了所有的pd.merge选项,但是它们似乎没有做我上面要求的事情。例如, 在“A”上匹配并将所有键保留在左侧
问题内容: 我肯定在这里错过了一些简单的事情。尝试在熊猫中合并具有相同列名的两个数据框,但右侧的数据框具有一些左侧没有的列,反之亦然。 我试着加入外部联接: 但这产生了: 我还指定了一个要连接的单列(例如on =“ id”),但是它复制了除“ id”以外的所有列,例如attr_1_x,attr_1_y,这并不理想。我也将整个列列表(有很多)传递给了“ on”: 产生: 我想念什么?我想获得一个带有
问题内容: 我在加入熊猫方面遇到问题,并且试图找出问题所在。假设我有一个x: 我应该能够通过简单的连接命令在y = x上将y与索引上的y联接,除了同名具有+2。 我希望决赛对双方都有1941个非值。我也尝试过合并,但是我有同样的问题。 我以为正确的答案是pandas.concat([x,y]),但这也不符合我的预期。 编辑:如果您在加入方面遇到问题,请阅读下面的韦斯答案。我有一个重复的时间戳。 问
问题内容: 我有以下数据框: 如何合并索引以获取: 我问,因为据我了解,即使用列进行匹配。实际上,这样做我得到: 在索引上合并是不好的做法吗?不可能吗 如果是这样,如何将索引移到称为“索引”的新列中? 问题答案: 使用,默认情况下是内部联接: 或,默认情况下为左连接: 或,默认情况下为外部联接: 样品 :
问题内容: 我正在使用下面的代码合并两个csv(数据帧): 我有以下CSV文件 文件1: 文件2: 合并后 如果您注意到student_id的开头附加了0,应该将其视为文本,但是在合并并使用函数后,它将其转换为数字并删除了前导0。 即使在to_csv之后,如何将列保持为“文本”? 我认为它的to_csv函数可以再次保存为数字添加了dtype = {‘student_id’:str}。 问题答案: