如何根据列值从datatframe提取行到多个CSV文件?

时间:2018-11-25 00:56:27

标签: python pandas dataframe pandas-groupby

我有以下数据框:

data = {'participant_id': [1, 100, 125, 125, 1, 100], 
        'test_day':['Day_1', 'Day_1', 'Day_12', 'Day_14', 'Day_4', 'Day_4'], 
        'favorite_color': ['blue', 'red', 'yellow', 'green', 'yellow', 'green'],  
        'grade': [88, 92, 95, 70, 80, 30]}
df = pd.DataFrame(data, columns = ['participant_id', 'test_day', 'favorite_color', 'grade'])

它有10000行,包含“ participant_id”列中存储的具有唯一且完全随机ID的400名测试参与者的数据。我的任务是为个人创建数据框(每个“ participant_id”),然后将其保存到单独的csv文件(共400个)中。

我已经尝试了几天,但没有运气。

能帮我吗?

我仍在学习如何编程以及尝试应用数据科学课程中的知识。我使用的是Pandas,通常我会使用df.loc访问有关单个参与者的数据,我还创建了所有partner_id的列表,但是我不知道如何将两者结合起来以自动实现所需的结果。

2 个答案:

答案 0 :(得分:2)

groupby + to_csv

您可以按特定字段分组并进行迭代:

for part_id, df_id in df.groupby('participant_id'):
    df_id.to_csv(f'{part_id}.csv')

答案 1 :(得分:1)

@jpp的解决方案很棒。我根据您的解决方案做出的调整是

import pandas as pd
import numpy as np

data = {'participant_id': [1, 100, 125, 125, 1, 100], 
        'test_day':['Day_1', 'Day_1', 'Day_12', 'Day_14', 'Day_4', 'Day_4'], 
        'favorite_color': ['blue', 'red', 'yellow', 'green', 'yellow', 'green'],  
        'grade': [88, 92, 95, 70, 80, 30]
       }

col = list(data.keys())
df = pd.DataFrame(data, columns = col)

for part_id, df_id in df.groupby('participant_id'):
  df_id.to_csv(f'{part_id}.csv',index=False)