首页 > 解决方案 > 根据列值拆分数据框

问题描述

我有一个包含多个 ID 的 df,我正在尝试对数据进行回归,我需要能够按 ID 拆分它以将回归应用于每个 ID:

样本DF(这只是样本真实数据较大)

在此处输入图像描述

我试图将 ID 保存在这样的列表中:

id_list = []

for data in df['id'].unique():
    id_list.append(data)

列表输出为 [1,2,3]

然后我试图用它来对 DF 进行排序:

def create_dataframe(df):

    for unique_id in id_list:
        df = df[df['Campaign ID'] == campaign_id]
        return df

当我调用该函数时,结果是:

在此处输入图像描述

但是我只得到了列表中第一个 ID 的结果,其他 2 [2,3] 没有返回任何 DF ......这意味着在某些时候循环会中断。

这是整个代码:

 df = pd.read_csv('budget.csv')

 id_list = []

 for unique_id in df['id'].unique():
     id_list.append(unique_id)


 def create_dataframe(df):

        for unique_id in id_list:
            df = df[df['Campaign ID'] == unique_id]
            return df

 print(create_dataframe(df)) 

标签: pythonpython-3.xpandasdataframe

解决方案


您似乎df在 for 循环中过夜。我建议将 df 创建移到 for 循环之外,然后将其附加到那里。然后在每个循环中添加它而不是覆盖它。


推荐阅读