Dataframe:将python列表转换为数据帧组?

2024-09-27 00:19:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张单子

数据表

    [['mark', 1], ['tom', 2], ['mark', 3], ['mark', 4], ['tom', 5], ['stuart', 6]]

将数据列表值传递给此处的函数

    for name_list in data_list:
        convertMerge(name_list)

还有一个函数,它获取列表并将其转换为df并保存

    def convertMerge(name_list):
        df = pd.DataFrame([name_list],columns=['name','id'])
        df.to_csv('names'.csv)

如果df具有相同的^{,我将尝试合并/append/concat

(这必须发生在convertMerge函数内部)

结果输出的df应如下所示:

     df with mark 

            mark.csv

                name    id
            0   mark    1
            1   mark    3
            2   mark    4

    df with tom 
          
            tom.csv

                name    id
            0   tom     2
            1   tom     5


    df with stuart

            stuart.csv`

                name    id
            0   stuart  6

Tags: csv数据函数nameiddf列表with
3条回答

这应该满足您的要求:

data_list = [['mark', 1], ['tom', 2], ['mark', 3], ['mark', 4], ['tom', 5], ['stuart', 6]]
def convertMerge():
  df = pd.DataFrame()
  for name_list in data_list:
    df = df.append(pd.DataFrame([name_list],columns=['name','id']))
    [y.reset_index(drop = True).to_csv(x + '.csv', index = False) for x, y in df.groupby('name')]
convertMerge()

您可以使用apply执行此操作:

pd.DataFrame([['mark', 1], ['tom', 2], ['mark', 3], ['mark', 4], ['tom', 5], ['stuart', 6]], columns = ['name', 'ID']).groupby('name').apply(lambda d: d.to_csv(f'{d.name}.csv', index=False))

此解决方案也可以使用unique

data_list = [['mark', 1], ['tom', 2], ['mark', 3], ['mark', 4], ['tom', 5], ['stuart', 6]]
df = pd.DataFrame(data_list, columns=['name', 'id'])
for name in df['name'].unique():
    df.loc[df['name'] == name].to_csv(name + '.csv')

相关问题 更多 >

    热门问题