【问题标题】:Inserting list contents into columns instead of rows using Pandas library使用 Pandas 库将列表内容插入列而不是行
【发布时间】:2022-01-24 01:08:04
【问题描述】:

我的目标是将列表添加到三列并导出到 Excel。我成功地将列表添加到行中,但数据更适合列中。

我使用以下代码将数据添加到行中:

df = pd.DataFrame(data=[firstList,secondList,thirdList])

df.to_excel('new.xlsx', sheet_name='first sheet')

我无法使用此代码将其添加到列中:

df = pd.DataFrame({
    'col1' : [firstList],
    'col2' : [secondList],
    'col3': [thirdList]
})

df.to_excel('new.xlsx', sheet_name='first sheet')

上面列出的代码的输出是:

这是所需的输出: 我正在尝试做的另一件事是也删除索引列,但这不太重要

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    试试这个:

    import ast
    cols = ['col1', 'col2', 'col3']
    df[cols] = df[cols].apply(lambda col: col.apply(ast.literal_eval))
    df = df.explode(cols)
    

    【讨论】:

    • df = pd.DataFrame({ 'col1' : [firstList], 'col2' : [secondList], 'col3': [thirdList] }) df.explode([firstList,secondList,thirdList ]) df.to_excel('new.xlsx', sheet_name='first sheet')
    • 运行这段代码给了我这个错误:
    • raise ValueError("column must be a scalar, tuple, or its list") ValueError: column must be a scalar, tuple, or its list
    • 运行 print(type(firstList)) 并打印:
    • 另外两个列表的类型是什么?
    【解决方案2】:

    如果所有列表的长度相同,请使用:

    df2 = df.apply(pd.Series.explode)
    

    注意。如果您有字符串首先转换为列表:

    df = df.apply(pd.eval)
    

    【讨论】:

      【解决方案3】:

      使用 split 函数拆分列表,使用 explode 函数将每个值分配到单独的行

      #Creating Empty Dataframe
      

      df2 = pd.DataFrame(columns=['a','b','c'])

      对于 ['a','b','c'] 中的 i: df2[i] = df[i].str.split(',').explode().reset_index(drop=True)

      df2

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多