【问题标题】:Convert list to dictionary by setting fixed length [duplicate]通过设置固定长度将列表转换为字典
【发布时间】:2019-01-10 19:59:03
【问题描述】:

我有一个列表 data=['CDs', 1, 'J12345','Rainbow', None, 'Styles', 2, 'J12345', 'Rainbow', None, 'Folk', 3, 'J12345', 'Rainbow', None] 我想将其转换为具有固定列数的 pandas 数据框。

预期的结果是这样的:

category |  num | series  |  title |  brand |
'CDs'       1     J12345   Rainbow   None 
'Styles'    2     J12345   Rainbow   None 
'Folk'      3     J12345   Rainbow   None 

【问题讨论】:

    标签: python pandas list dictionary dataframe


    【解决方案1】:

    设置

    num_cols = 5
    cols = ['category', 'num', 'series', 'title', 'brand']
    

    numpy.reshape

    d = np.reshape(data, (-1, num_cols))  
    pd.DataFrame(d, columns=cols)
    

      category num  series    title brand
    0      CDs   1  J12345  Rainbow  None
    1   Styles   2  J12345  Rainbow  None
    2     Folk   3  J12345  Rainbow  None
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      import pandas as pd
      
      data = ['CDs', 1, 'J12345','Rainbow', None,
              'Styles', 2, 'J12345', 'Rainbow', None,
              'Folk', 3, 'J12345', 'Rainbow', None]
      
      df = pd.DataFrame([data[i:i+5] for i in range(0, len(data), 5)], columns=['category', 'num', 'series',  'title', 'brand'])
      print(df)
      

      输出

        category  num  series    title brand
      0      CDs    1  J12345  Rainbow  None
      1   Styles    2  J12345  Rainbow  None
      2     Folk    3  J12345  Rainbow  None
      

      声明:

      [data[i:i+5] for i in range(0, len(data), 5)]
      

      创建以下列表列表:

      [['CDs', 1, 'J12345', 'Rainbow', None], ['Styles', 2, 'J12345', 'Rainbow', None], ['Folk', 3, 'J12345', 'Rainbow', None]]
      

      以上可以直接传给pandas。

      【讨论】:

        【解决方案3】:

        几乎和@user3483203一样的想法,

        a = np.array(data)
        nrows = 3
        ncols = a.shape[0]//nrows
        df = pd.DataFrame(a.reshape(nrows, ncols), columns=['category', 'num', 'series', 'title', 'brand'] )
        
            category    num series  title   brand
        0   CDs         1   J12345  Rainbow None
        1   Styles      2   J12345  Rainbow None
        2   Folk        3   J12345  Rainbow None
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-20
          相关资源
          最近更新 更多