【问题标题】:Generate a pandas dataframe from list of list从列表列表生成熊猫数据框
【发布时间】:2016-07-25 01:50:18
【问题描述】:

我想知道如何从列表的列表中生成一个 pd DataFrame:

输入:

A=[['a','b','c'],['c','d','e'],['f','g','h']]

输出:(在数据框中)

No content   
0 'a'
0 'b'
0 'c'
1 'c'
1 'd'
1 'e'
2 'f'
2 'g'
2 'h'

【问题讨论】:

    标签: python list pandas dictionary dataframe


    【解决方案1】:

    您可以融合数据帧的转置以产生您想要的结果。

    import pandas as pd
    
    >>> pd.melt(pd.DataFrame(A).T, var_name='No.', value_name='content')
       No. content
    0    0       a
    1    0       b
    2    0       c
    3    1       c
    4    1       d
    5    1       e
    6    2       f
    7    2       g
    8    2       h
    

    【讨论】:

      【解决方案2】:

      你可以试试这个:

      import pandas as pd
      A1 = pd.DataFrame(A).stack().reset_index().drop('level_1', 1).rename(columns = {'level_0': "No", 0: "content"})
      
      A1
      #  No  content
      #0  0        a
      #1  0        b
      #2  0        c
      #3  1        c
      #4  1        d
      #5  1        e
      #6  2        f
      #7  2        g
      #8  2        h
      

      或者您可以先展平列表,然后从中构造数据框:

      dicA = {"No":[], "content":[]}
      for i, s in enumerate(A):
          for e in s:
              dicA['No'].append(i)
              dicA['content'].append(e)
      
      import pandas as pd
      pd.DataFrame(dicA)
      
      #  No  content
      #0  0        a
      #1  0        b
      #2  0        c
      #3  1        c
      #4  1        d
      #5  1        e
      #6  2        f
      #7  2        g
      #8  2        h
      

      【讨论】:

        【解决方案3】:

        在您的列表中尝试使用 zip():

        df = pd.melt(pd.DataFrame(zip(*A))).rename(columns= {'variable':'no','value':'content' })
        
        
            no content
        0   0       a
        1   0       b
        2   0       c
        3   1       c
        4   1       d
        5   1       e
        6   2       f
        7   2       g
        8   2       h
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-07-31
          • 2017-08-09
          • 1970-01-01
          • 2022-01-04
          • 1970-01-01
          • 2023-01-14
          • 2022-11-15
          • 2022-12-10
          相关资源
          最近更新 更多