【问题标题】:Convert list into dataframe python by converting list elements into rows and columns [duplicate]通过将列表元素转换为行和列,将列表转换为数据框 python [重复]
【发布时间】:2021-01-19 17:52:12
【问题描述】:

我目前有一个包含 25 个元素的列表(形状为 25,1)。这仅包含数据项。我想将列表元素转换为具有 5 列和 5 行的 pandas DataFrame。我必须单独 colNames,只想使用以下方法:

myList = ([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,20,21,22,23,24,25])
df = pd.DataFrame(myList,columns=['Col1', 'Col2', 'Col3', 'Col4', 'Col5'])

很明显,上面的代码不起作用,因为我的列表元素和后续的 df 形状不同。有没有一种简单的方法可以在每 5 个元素之后将列表元素拆分为行?另外,请记住,我没有像上面的示例那样创建列表 - 我只想在列表转换为适当的形状后执行第二行。我想我可以尝试先将列表转换为 numpy 数组,然后以这种方式对其进行重塑,然后再转换为 Pandas DataFrame,但只是想看看是否有更快的方法。

【问题讨论】:

标签: python pandas list dataframe


【解决方案1】:

Numpy 在这里运行良好:

import numpy as np
myList = ([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,20,21,22,23,24,25])
myList = np.asarray(myList).reshape(5,5)
print(myList)

会输出

array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [11, 12, 13, 14, 15],
       [16, 17, 18, 18, 20],
       [21, 22, 23, 24, 25]])

【讨论】:

  • 打败我!
  • 完美!谢谢大家:-)
  • 我会尽快接受解决方案。
【解决方案2】:
import math
import pandas as pd

l = ([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,20,21,22,23,24,25])
df=[l[5*i:5*i+5] for i in range(0,math.ceil(len(l)/5))]

df = pd.DataFrame(df,columns=['Col1', 'Col2', 'Col3', 'Col4', 'Col5'])
print(df)

输出:

   Col1  Col2  Col3  Col4  Col5
0     1     2     3     4     5
1     6     7     8     9    10
2    11    12    13    14    15
3    16    17    18    18    20
4    21    22    23    24    25

【讨论】:

    【解决方案3】:

    以防万一没有numpy

    示例

    import pandas as pd
    
    ls = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,20,21,22,23,24,25]
    size = 5
    
    ls = [ls[i::size] for i in range(size)]
    
    df = pd.DataFrame(ls,columns=['Col1', 'Col2', 'Col3', 'Col4', 'Col5'])
    

    输出

    Col1    Col2    Col3    Col4    Col5
    1       6       11      16      21
    2       7       12      17      22
    3       8       13      18      23
    4       9       14      18      24
    5       10      15      20      25
    

    【讨论】:

      猜你喜欢
      • 2013-01-27
      • 1970-01-01
      • 2016-02-05
      • 2017-09-10
      • 2017-03-24
      • 2017-12-30
      相关资源
      最近更新 更多