【问题标题】:Converting numpy array into dataframe column?将numpy数组转换为数据框列?
【发布时间】:2017-11-09 12:17:17
【问题描述】:

如何将 numpy 数组转换为数据框列。假设我创建了一个空数据框df,然后循环代码以创建 5 个 numpy 数组。我的 for 循环的每次迭代,我想将我在该迭代中创建的 numpy 数组转换为我的数据框中的一列。澄清一下,我不想在循环的每次迭代中都创建一个新的数据框,我只想在现有的数据框中添加一列。我下面的代码是粗略的,语法不正确,但说明了我的观点。

df = pd.dataframe()
for i in range(5):
   arr = create_numpy_arr(blah) # creates a numpy array
   df[i] = # convert arr to df column

【问题讨论】:

    标签: python pandas numpy dataframe


    【解决方案1】:

    这是最简单的方法:

    df['column_name']=pd.Series(arr)
    

    【讨论】:

      【解决方案2】:

      这样就可以了

      import pandas as pd
      import numpy as np
      
      df = pd.DataFrame()
      
      for i in range(5):
          arr = np.random.rand(10)
          df[i] = arr
      

      也许更简单的方法是使用矢量化

      arr = np.random.rand(10, 5)
      df = pd.DataFrame(arr)
      

      【讨论】:

        【解决方案3】:

        由于您想从数组中创建一列而不是整个 DataFrame,您可以这样做

        import pandas as pd
        import numpy as np
        
        column_series = pd.Series(np.array([0, 1, 2, 3]))
        

        将该列分配给现有的DataFrame

        df = df.assign(column_name=column_series)
        

        上面会在df中添加一个名为column_name的列。

        相反,如果您没有任何 DataFrame 可分配这些值,则可以将 dict 传递给构造函数,以从您的 numpy 数组创建命名列:

        df = pd.DataFrame({ 'column_name': np.array([0, 1, 2, 3]) })
        

        【讨论】:

          猜你喜欢
          • 2019-12-27
          • 2021-10-29
          • 2020-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-31
          • 2020-07-15
          相关资源
          最近更新 更多