我有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')
现在我已经将它们合并为一个新的数据帧,如:
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
三次似乎有点过分。
您有一段非常清晰的代码,可以完全执行您想要的操作。您想要进行三次合并,所以使用merge((三次是足够的,而不是过度的。
您可以使用DataFrames有一个合并函数的事实来缩短代码,这样您就不需要左参数了。您也可以将它们链接起来,但我要指出的是,我的示例看起来不如较长的表单代码整洁易读。
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')