【问题标题】:How to create a dataframe with multiple lists/arrays in python如何在python中创建具有多个列表/数组的数据框
【发布时间】:2019-11-02 02:19:21
【问题描述】:

我有许多由一维数据组成的列表。如下:

list1 = [1,2,3,4...]
list2 = ['a','b','c'...] 

现在,我必须创建如下数据框:

df = [[1,'a'],[2,'b'],[3,'c']]

我需要这个数据框,以便我可以使用 pandas_profiling 来分析每一列。 请提出建议。

我试过了

list1+list2

但它给出的数据如下:

list3=[1,2,3,4...'a','b'...]

也使用了 numpy hpstack,但无法正常工作

import pandas as pd
import pandas_profiling
import numpy as np

list3 = np.hstack([[list1],[list2]])

array([[1,2,3,4,'a','b','c'..]],dtype='<U5')

【问题讨论】:

  • Numpy 仅用于数字数组,使用 pandas,google 一些 pandas 教程应该在前几章中
  • zip 是正确的答案,但这是你可以在 numpy 中完成的:np.vstack((list1, list2)).T
  • 对于列表+ 是一个简单的连接。使用hstack 表达式,您可以在最后一维上连接 (1,n) 数组,生成 (1,2n) 数组。 column_stack 将创建一个 (n,2) 数组,但字符串 dtype。 python zip 在迭代数字和字符串元素方面做得更好。

标签: python python-3.x pandas numpy pandas-profiling


【解决方案1】:

您可以使用the answer from this question 中描述的zip function 创建嵌套列表。

您应该注意,您不能直接使用 zip 函数,因为它可能会导致 error

解决办法是:

import pandas as pd

list1 = [1,2,3]
list2 = ['a','b','c']
df = pd.DataFrame(list(zip(list1,list2)), columns=['list1', 'list2'])

【讨论】:

    【解决方案2】:

    你可以这样做:

    import pandas as pd
    
    list1 = [1,2,3,4]
    list2 = ['a','b','c','d']
    list3 = zip(list1, list2)
    df = pd.DataFrame(list3, columns=('list1', 'list2'))
    print (df)
    

    输出:

       list1 list2
    0      1     a
    1      2     b
    2      3     c
    3      4     d
    

    【讨论】:

    • 这会在我的环境中引发错误:TypeError: data argument can't be an iterator
    • 对不起,我使用 Python 3.6.3。我编辑了我的答案以防其他用户遇到同样的错误
    猜你喜欢
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 2021-12-01
    • 2016-02-26
    • 2021-01-01
    • 2020-01-14
    • 1970-01-01
    相关资源
    最近更新 更多