英文:
Pandas merging column 1 from dataframe A to dataframe B, when there are multiple matching rows in column 1 of dataframe B?
问题
我正在尝试将一个数据框中与特定文学文本相关的数据合并到另一个数据框中。在第一个数据框中,有两列,一列是标题信息,另一列是小说的章节。例如:
第一个数据框:
标题 | 章节 |
---|---|
书1 | 开始 |
书1 | 中间 |
书1 | 结尾 |
书2 | 开始 |
书2 | 中间 |
书2 | 结尾 |
第二个数据框中,有关每本书的分类数据。例如:
第二个数据框:
标题 | 美国人 |
---|---|
书1 | 是 |
书2 | 否 |
我需要根据标题将它们合并,以便第二个数据框中的“美国人”值在第一个数据框中重复,如下所示:
合并后的数据框:
标题 | 章节 | 美国人 |
---|---|---|
书1 | 开始 | 是 |
书1 | 中间 | 是 |
书1 | 结尾 | 是 |
书2 | 开始 | 否 |
书2 | 中间 | 否 |
书2 | 结尾 | 否 |
根据我最接近的尝试(基于[pandas合并指南]https://stackoverflow.com/questions/53645882/pandas-merging-101),是这样的:
df4.merge(df5["美国人"], left_on=["标题"], right_on=["标题"], how="left")
如果没有指定left_on
和right_on
,会出现要求提供right_on
值的错误,尽管文档中没有提到这一点。然而,现在我遇到了一个KeyError: '标题'的问题,尽管"标题"明确是两个数据框中的列标题。
英文:
I'm trying to get data associated with certain literary texts from one dataframe into another. In the first dataframe, there are two columns, one with title info, and one with the section of the novel. For example
Title | Section |
---|---|
Book1 | beginning |
Book1 | middle |
Book1 | end |
Book2 | beginning |
Book2 | middle |
Book2 | end |
In a second dataframe, I have categorical data about each book. For example:
Title | American |
---|---|
Book1 | yes |
Book2 | no |
I need to merge them on Title so that the 'American' values from the second dataframe duplicate in the first dataframe, as follows:
Title | Section | American |
---|---|---|
Book1 | beginning | yes |
Book1 | middle | yes |
Book1 | end | yes |
Book2 | beginning | no |
Book2 | middle | no |
Book2 | end | no |
The closest I've gotten (based on the [pandas merge guide]<https://stackoverflow.com/questions/53645882/pandas-merging-101> is:
df4.merge(df5["American"], left_on=["Title"], right_on=["Title"], how = "left")
Without have both left_on and right_on, I get an error demanding a right_on value, despite the documentation. However, now I am getting a KeyError: 'Title', even though Title is definitely a column header in both dataframes?
答案1
得分: 1
你之所以出现关键错误,是因为你试图将df4与df5的“American”列合并。因此,它看不到df5上的“Title”列。
尝试这个:
df4.merge(df5, how="left", on="Title")
英文:
You are getting key error just because you are trying to merge df4 with just "American" column of df5. Therefore it doesn't see the "Title" column on df5.
Try this one :
df4.merge(df5, how = "left",on="Title")
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论