【问题标题】:Merging two data frames when the column names are different当列名不同时合并两个数据框
【发布时间】:2022-01-10 10:22:08
【问题描述】:

我正在尝试将几个 excel 文件合并到一个大的 excel 文件中。 问题是这些文件中的列名不同,尽管数据是相同的。 换句话说,对于相同的单元格值,该列一次称为“a”,一次称为“b”。 当我合并这些文件时,不是将所有数据放在相同的列名下,而是将每个文件中的数据放入不同的列中。所以它在联合 excel 中的外观远非很好。

如何检查两列是否共享相同的名称,然后将数据合并到同一列下? 这是列名-

file1.columns

Index(['Day', 'Month', 'Year', 'Station', 'Sample ID', 'Syn Conc. (#/mL)',
       'Euk Conc. (#/mL)', 'Pro Conc. (#/mL)', **'Hetero Bact. Conc. (#/mL)'**,
       'FCS Syn / FCS beads medians ratio',
       'FCS Euk / FCS beads medians ratio',
       'FCS Pro / FCS beads medians ratio',
       'SCS Syn / SCS beads medians ratio',
       'SCS Euk / SCS beads medians ratio',
       'SCS Pro / SCS beads medians ratio'],
      dtype='object')

file2.columns

Index(['Day', 'Month', 'Year ', 'Station ', 'Depth (m)', 'Syn Conc. (#/mL)',
       'Euk Conc. (#/mL)', 'Pro Conc. (#/mL)', 'Pro-Violet Conc. (#/mL)',
       **'Hetero Bacteria**', 'FCS Syn / FCS beads medians ratio',
       'FCS Euk / FCS beads medians ratio',
       'FCS Pro / FCS beads medians ratio',
       'FCS Pro-Violet / FCS beads medians ratio',
       'SCS Syn / SCS beads medians ratio',
       'SCS Euk / SCS beads medians ratio',
       'SCS Pro / SCS beads medians ratio',
       'SCS Pro-Violet / SCS beads medians ratio',
       'Red FL Syn / Red FL beads medians ratio',
       'Red FL Euk / Red FL beads medians ratio',
       'Red FL Pro / Red FL beads medians ratio',
       'Red FL Pro-Violet / Red FL beads medians ratio',
       'Orange FL Syn / Orange FL beads medians ratio', 'Analysis Date'],
      dtype='object')

在此先感谢大家, 卡琳 :-)

【问题讨论】:

    标签: pandas dataframe merge


    【解决方案1】:

    只需在合并之前重命名您的列。假设您要保留第一个数据帧的格式,而第二个数据帧的名称为df2

    df2.rename({'Hetero Bacteria': 'Hetero Bact. Conc. (#/mL)'})
    

    注意操作不到位,所以要么做:

    df2 = df2.rename({'Hetero Bacteria': 'Hetero Bact. Conc. (#/mL)'})
    

    或在合并命令中使用重命名的数据框(我假设它是concat):

    pd.concat([df1, df2.rename({'Hetero Bacteria': 'Hetero Bact. Conc. (#/mL)'})])
    

    【讨论】:

    • 谢谢!但似乎即使列名相同,它仍会创建另一列(具有相同的名称......)并将值放在那里。我似乎无法理解为什么它将相同的列添加到单独的列中:-(
    • 然后请提供一个最小的示例(两个小数据框,您用于​​合并的命令,以及您无法获得的预期输出)
    猜你喜欢
    • 2021-12-28
    • 2019-11-20
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 2021-11-30
    • 2017-09-29
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多