【问题标题】:Performance unpacking list of lists into pandas dataframe将列表的性能解包到熊猫数据框中
【发布时间】:2018-07-11 04:54:11
【问题描述】:

我有一个列表列表,其中外部列表​​的长度为 100k,每个内部列表的长度为 2,有两个布尔条目,例如 [True, False]。我试图将第一个条目中的每一个放入数据框的一列中,并将第二个条目中的每一个放入另一个中。我的代码可以运行,但速度很慢(大约需要 12 秒):

populate_df[["col1", "col2"]] = pd.Series(list_of_lists).apply(pd.Series)

有人可以推荐一种性能更好的方法吗?

【问题讨论】:

    标签: python python-3.x pandas indexing


    【解决方案1】:

    试试这个:

    In [29]: lst = [[False,False],[True, False],[False, True]]
    
    In [30]: df = pd.DataFrame(lst, columns=['col1','col2'])
    
    In [31]: df
    Out[31]:
        col1   col2
    0  False  False
    1   True  False
    2  False   True
    

    【讨论】:

    • 啊,谢谢,假设它会创建一个数据框,如果我这样做的话,每个内部列表都是另一列。我会在允许的情况下尽快接受这个答案。
    • 嗨,@MaxU,我怎样才能为多个键做到这一点。我试过追加,但无济于事。
    • @BFurtado,请使用相应的小型可重现数据集和您想要的数据集打开一个新问题。
    【解决方案2】:

    如果您想向现有数据框添加列,这将起作用:-

    import pandas as pd
    
    df = pd.DataFrame()
    lst = [[True, False], [False, False], [True, True], [False, True]]
    
    df = pd.concat([df, pd.DataFrame(columns=['A', 'B'])], axis=1)
    df.A, df.B = list(zip(*lst))
    
    #        A      B
    # 0   True  False
    # 1  False  False
    # 2   True   True
    # 3  False   True
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-13
      • 1970-01-01
      • 2013-04-03
      • 1970-01-01
      • 2018-11-18
      • 2020-06-03
      • 2023-02-26
      • 2019-10-12
      相关资源
      最近更新 更多