代码之家  ›  专栏  ›  技术社区  ›  IndigoChild

在pandas中合并循环中的多个系列

  •  1
  • IndigoChild  · 技术社区  · 6 年前

    所以我有一个系列的清单如下:

    groupdf1
    Out[304]: 
    [90-95    9
     >100     1
     80-90    1
     50-80    1
     Name: bucket, dtype: int64, 80-90     9
     95-100    1
     90-95     1
     50-80     1
     Name: bucket, dtype: int64, 80-90    10
     90-95     1
     50-80     1
     Name: bucket, dtype: int64, 80-90     11
     95-100     1
     Name: bucket, dtype: int64, 50-80    9
    

    我尝试的是创建一个如下所示的数据帧:

          bucket.1  bucket.2 bucket.3 bucket.4
    90-95   9         1         1        NaN
    >100    1        NaN       NaN       NaN
    80-90   1         9        10        11
    50-80   1         1         1        NaN
    95-100 NaN       NaN       NaN        1
    

    groupdf=pd.DataFrame(groupdf1[0])
    for i in range(1,len(groupdf1)):
        groupdf2=pd.DataFrame(groupdf1[i])
        groupdf.concat(groupdf2)
    
    
    Traceback (most recent call last):
    
      File "<ipython-input-278-4c8876ecdb74>", line 4, in <module>
        groupdf.concat(groupdf2)
    
      File "C:\Users\hp1\Anaconda3\lib\site-packages\pandas\core\generic.py", line 3081, in __getattr__
        return object.__getattribute__(self, name)
    
    AttributeError: 'DataFrame' object has no attribute 'concat'
    

    有人能帮帮我吗?谢谢。

    2 回复  |  直到 6 年前
        1
  •  3
  •   jezrael    6 年前

    如果 groupdf1 是的列表 DataFrame s使用 pandas.concat axis=1 enumerate f-string

    df = pd.concat(groupdf1, axis=1)
    df.columns = [f'{x}.{i}' for i, x in enumerate(df.columns, 1)]
    #alternative
    #df.columns = [f'bucket.{i}' for i in np.arange(1,len(df.columns) + 1)]
    
        2
  •  1
  •   blacksite    6 年前

    它的熊猫。。。DataFrame对象没有该属性。尝试pandas.concat((df1,df2)),或者任何您的数据帧的名称。正如jezrael所指出的,pd.concat接受任何数据帧间隔,所以只需传递axis=1参数即可按列进行连接。