将多个 CSV 文件导入 pandas 并根据列值合并这些文件

Import multiple CSV files into pandas and merge those based on column values

我有 4 个数据帧:

import pandas as pd
df_inventory_parts = pd.read_csv('inventory_parts.csv')
df_colors = pd.read_csv('colors.csv')
df_part_categories = pd.read_csv('part_categories.csv')
df_parts = pd.read_csv('parts.csv')

现在我已将它们合并到 1 个新的数据框中,例如:

merged = pd.merge(
    left=df_inventory_parts, 
    right=df_colors, 
    how='left', 
    left_on='color_id', 
    right_on='id')

merged = pd.merge(
    left=merged, 
    right=df_parts, 
    how='left', 
    left_on='part_num', 
    right_on='part_num')

merged = pd.merge(
    left=merged, 
    right=df_part_categories, 
    how='left', 
    left_on='part_cat_id', 
    right_on='id')

merged.head(20)

这提供了我正在寻找的正确数据集。但是,我想知道是否有更短的方式/更快的方式来编写它。使用 pd.merge 3 次似乎有点过分。

您有一段非常清晰的代码,可以完全满足您的需求。您想进行三次合并,因此使用 merge() 三次就足够了,而不是过多。

您可以使用 DataFrames 具有合并功能这一事实来缩短您的代码,这样您就不需要 left 参数。您也可以链接它们,但我要指出的是,我的示例看起来不像您的长格式代码那么整洁和可读。

merged = df_inventory_parts.merge(
    right=df_colors, 
    how='left', 
    left_on='color_id', 
    right_on='id').merge(
    right=df_parts, 
    how='left', 
    left_on='part_num', 
    right_on='part_num').merge(
    right=df_part_categories, 
    how='left', 
    left_on='part_cat_id', 
    right_on='id')