将多个 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')
我有 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')