【问题标题】:How to initialize a two dimensional string DataFrame array in python如何在python中初始化一个二维字符串DataFrame数组
【发布时间】:2018-03-02 21:39:49
【问题描述】:

我想初始化一个 31756x2 的字符串数据框。 我希望它看起来像这样:

index  column1     column2

0        A           B
1        A           B
.
.
31756    A           B

我写道:

content_split = [["A", "B"] for x in range(31756)]

这是结果:

我确实得到了一个二维列表,但我希望列像在数据框中那样分开,但我似乎无法让它工作(如 column1: A.. , column2: B... )

希望得到一些帮助。

【问题讨论】:

    标签: python arrays pandas spyder


    【解决方案1】:

    仅使用DataFrame 构造函数:

    df = pd.DataFrame([["A", "B"] for x in range(31756)], columns=['col1','col2'])
    print (df.head())
    
      col1 col2
    0    A    B
    1    A    B
    2    A    B
    3    A    B
    4    A    B
    

    或者:

    N = 31756
    df = pd.DataFrame({'col1':['A'] * N, 'col2':['B'] * N})
    print (df.head())
      col1 col2
    0    A    B
    1    A    B
    2    A    B
    3    A    B
    4    A    B
    

    【讨论】:

      【解决方案2】:

      使用numpy.tile

      import numpy as np
      df = pd.DataFrame(np.tile(list('AB'), (31756, 1)), columns=['col1','col2'])
      

      或者只是传递一个字典:

      df = pd.DataFrame({'A':['A']*31756, 'B':['B']*31756})
      

      如果使用后一种方法,您可能需要明确地对列进行排序,因为字典没有顺序:

      df = pd.DataFrame({'A':['A']*31756, 'B':['B']*31756}).sort_index(axis=1)
      

      【讨论】:

        【解决方案3】:
        import pandas as pd
        
        df = pd.DataFrame(index=range(31756))
        df.loc[:,'column1'] =  'A'
        df.loc[:,'column2'] = 'B'
        

        【讨论】:

          【解决方案4】:

          为了好玩

          pd.DataFrame(index=range(31756)).assign(dict(col1='A', col2='B'))
          

          【讨论】:

            猜你喜欢
            • 2014-12-08
            • 2011-01-24
            • 2011-06-04
            • 1970-01-01
            • 1970-01-01
            • 2016-11-12
            • 2017-01-04
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多