首页 > 解决方案 > 使用 for 循环从大数据帧创建更小的数据帧

问题描述

我有一个数据框,其中包含与特定汽车相关的零件号。我正在尝试使用 for 循环将较大的数据帧(其中包含所有车辆)分解为每个车辆的较小数据帧。我的主要问题是我需要引用车辆名称并将它们放在各自数据框的名称中。例如,我需要将所有 Altima 零件编号放在名为 df2020 Altima 的数据框中

我正在使用下面的代码来完成这个

df4_vehicle_list = df4['Model_Name'].unique()
df4_vehicle_list

此代码返回:array(['2020 Maxima', '2020 Altima', '2020 Leaf', '2019 Altima', '2020(.5) Rogue', '2020 JX', '2021 Murano', '2019 Pathfinder' , '2020 探路者', '2021 盗贼'], dtype=object)

然后我尝试使用下面的代码

for i in df4_vehicle_list:
    name = df4['Model_Name'] == i
    df[i] = df4[name]

标签: python-3.xpandasloopsdataframefiltering

解决方案


IIUC,这就是你要找的。== 测试相等,而 = 用于赋值。因此 for 行之后的第一行创建了每个模型模型的 df 切片。下一行将迭代变量 i 的值分配给 Model Name 列。

df_list = []

for i in df4_vehicle_list:
    df = df4.loc[df4['Model_Name'] == i]
    df['Model_Name'] = i

    df_list.append(df)

concatted_df = pd.concat(df_list)

推荐阅读