如何从具有公共列值的两个数据帧获得合并的数据帧,使得仅那些行使合并的数据帧在特定列中具有共同的值.
我有5000行df1作为格式: -
director_name actor_1_name actor_2_name actor_3_name movie_title
0 James Cameron CCH Pounder Joel David Moore Wes Studi Avatar
1 Gore Verbinski Johnny Depp Orlando Bloom Jack Davenport Pirates
of the Caribbean: At World's End
2 Sam Mendes Christoph Waltz Rory Kinnear Stephanie Sigman Spectre
Run Code Online (Sandbox Code Playgroud)
和万行df2as
movieId genres movie_title
1 Adventure|Animation|Children|Comedy|Fantasy Toy Story
2 Adventure|Children|Fantasy Jumanji
3 Comedy|Romance Grumpier Old Men
4 Comedy|Drama|Romance Waiting to Exhale
Run Code Online (Sandbox Code Playgroud)
公共列'movie_title'具有共同的值,并且基于它们,我想获得'movie_title'相同的所有行.要删除的其他行.
任何帮助/建议将不胜感激.
注意:我已经尝试过了
pd.merge(dfinal, df1, on='movie_title')
Run Code Online (Sandbox Code Playgroud)
输出就像一排
director_name actor_1_name actor_2_name actor_3_name movie_title movieId title genres
Run Code Online (Sandbox Code Playgroud)
并且在如何="外部"/"左","右",我尝试了所有并且在放弃NaN之后没有获得任何行,尽管存在许多共同的coloumn.
pan*_*sen 32
你可以使用pd.merge:
import pandas as pd
pd.merge(df1, df2, on="movie_title")
Run Code Online (Sandbox Code Playgroud)
仅保留在两个数据帧中找到公共密钥的行.如果您想要保留左侧数据框中的所有行,并且只添加df2匹配键可用的值,则可以使用how="left".
Har*_*_pb 23
我们可以通过多种方式合并两个数据帧.python中最常见的方法是在Pandas中使用合并操作.
import pandas
dfinal = df1.merge(df2, on="movie_title", how = 'inner')
Run Code Online (Sandbox Code Playgroud)
对于基于不同数据帧的列的合并,您可以指定左右公共列名称,特别是在同一列的两个不同名称含糊不清的情况下,可以说 - 'movie_title'as 'movie_name'.
dfinal = df1.merge(df2, how='inner', left_on='movie_title', right_on='movie_name')
Run Code Online (Sandbox Code Playgroud)
如果您想更具体,可以阅读pandas merge操作的文档.
小智 8
如果您想合并两个 DataFrame 并且您想要一个合并的 DataFrame,其中只有来自两个数据帧的公共值才会出现,然后进行内部合并。
import pandas as pd
merged_Frame = pd.merge(df1, df2, on = id, how='inner')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49256 次 |
| 最近记录: |