Python 3.x 使用for循环从大型数据帧创建较小的数据帧

Python 3.x 使用for循环从大型数据帧创建较小的数据帧,python-3.x,pandas,loops,dataframe,filtering,Python 3.x,Pandas,Loops,Dataframe,Filtering,我有一个数据框,其中包含与特定汽车相关的零件号。我尝试使用for循环将较大的数据帧(包含所有车辆)分解为每个车辆的较小数据帧。我的主要问题是,我需要引用车辆名称,并将它们放置在各自数据框的名称中。例如,我需要所有Altima零件号都位于名为df2020 Altima的数据帧中 我正在使用下面的代码来实现这一点 df4_vehicle_list = df4['Model_Name'].unique() df4_vehicle_list 此代码返回: 阵列(['2020最大值'、'2020高度'、

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

我正在使用下面的代码来实现这一点

df4_vehicle_list = df4['Model_Name'].unique()
df4_vehicle_list
此代码返回: 阵列(['2020最大值'、'2020高度'、'2020叶'、'2019高度', “2020(.5)流氓”、“2020 JX”、“2021 Murano”、“2019探路者”, '2020探路者','2021盗贼'],dtype=object)

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

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


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

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)

这能回答你的问题吗?这个代码不太管用。我只剩下2021个流氓数据,因为代码在每次迭代I时都在df上写。我想在数据帧的名称中得到“Model_Name”。此外,我认为我需要删除“Model_Name”中的空格,以便能够引用df(df名称不喜欢空格)。我最初的答案只是针对问题的赋值部分。我编辑它是为了避免像您描述的那样的覆盖问题,但是如果没有样本数据,很难确认一切正常。你能添加少量的样本数据吗?如果您这样做,我将确保此解决方案对您有效。