首页 > 解决方案 > 数据框:将 python 列表转换为数据框组?

问题描述

我有一个清单

数据列表

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

传递 data_list 值以在此处运行。

    for name_list in data_list:
        convertMerge(name_list)

还有一个函数,它接受 list 并将其转换为 df 并保存它。

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

我正在尝试合并/附加/连接 df,如果它具有相同的name.

(这必须发生在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

标签: pythonpandasnumpydataframe

解决方案


试试这个df.groupby

>>> master_df = pd.DataFrame(data_list, columns = ['name', 'ID'])
>>> for key, sub_df in master_df.groupby('name'):
        sub_df.reset_index(drop=True).to_csv(key + '.csv')

对于您的功能:

def convertMerge(name_list):
    df = pd.DataFrame(name_list,columns=['name','id'])
    for key, sub_df in df.groupby('name'):
        sub_df.reset_index(drop=True).to_csv(key + '.csv')

convertMerge(data_list)

如果打印它看起来像这样:

>>> master_df = pd.DataFrame(data_list, columns = ['name', 'ID'])
>>> for key, sub_df in master_df.groupby('name', sort=False):
        print(key + '.csv')
        sub_df.reset_index(drop=True)

# output:
mark.csv
   name  ID
0  mark   1
1  mark   3
2  mark   4
tom.csv
  name  ID
0  tom   2
1  tom   5
stuart.csv
     name  ID
0  stuart   6

推荐阅读