python - 根据行值合并 Pandas 数据框

标签 python pandas dataframe

我有两个 .tsv 文件,如下所示:

ID prop name size
A   x   rob    2
B   y   sally  3
C   z   debby  5
D   w    meg   6

ID lst_name area
A   sanches  4
D    smith   7 
C    roberts  8

我将它们加载到 pandas DataFrame 中并想合并它们,这样我就得到了一个新的 dataFrame:

ID-name prop name size lst_name area
A   x   rob    2    sanches  4
B   y   sally  3
C   z   debby  5   roberts   8
D   w    meg   6    smith    7

我一直在尝试使用 pd.merge() 来完成此操作,但遇到以下问题:

df = pd.DataFrame.from_csv("a.tsv", sep='\t')
df1 = pd.DataFrame.from_csv("b.tsv", sep='\t')
result = pd.merge(df, df1, how='inner',on=["ID","ID-name"])

是否可以用 pandas 完成这样的合并?

最佳答案

您需要的是左连接(或外连接,当然取决于您的情况),因为在此示例中您还希望查看 B 的记录,即使它在 df1 上没有记录。

result = pd.merge(df, df1, how="left",on=["ID","ID"])

      prop   name  size lst_name  area
ID ID
A  A     x    rob     2  sanches   4.0
B  B     y  sally     3      NaN   NaN
C  C     z  debby     5  roberts   8.0
D  D     w    meg     6    smith   7.0

关于python - 根据行值合并 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54896162/

相关文章:

Python:Pandas 错误地排除了 groupby 中的列

python - 如何使用 pandas 在同一行索引下拥有多行

python - 可视化 pandas/numpy 中的共现矩阵

python - 删除重复的分隔符 Pandas

python - 在 doctest 中,有没有办法将 yaml 代码块视为变量?

c++ - 使用高度图扭曲图像?

python - 比较 DF 中两列的(子)字符串

Python Pandas 将列添加到多索引 GroupBy DataFrame

python - 获取前一个较小值的索引

python - 从 for 循环的输出创建 pandas 数据框