【问题标题】:Merging multiple series in loop in pandas在熊猫中循环合并多个系列
【发布时间】:2019-03-07 07:37:32
【问题描述】:

所以我有一个系列列表如下:

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'

有人可以帮我吗?谢谢。

【问题讨论】:

    标签: python pandas loops merge series


    【解决方案1】:

    如果groupdf1DataFrames 的列表,请使用pandas.concataxis=1,然后通过enumeratef-strings 设置新列名称:

    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】:

      它是 pandas.concat ... DataFrame 对象没有该属性。尝试 pandas.concat((df1, df2)) 或任何您的数据框的名称。正如 jezrael 指出的那样, pd.concat 采用任何间隔的数据帧,因此只需将 axis=1 参数传递给按列连接即可。

      【讨论】:

        猜你喜欢
        • 2014-10-20
        • 1970-01-01
        • 2018-01-08
        • 2015-09-03
        • 2019-10-07
        • 1970-01-01
        • 2018-02-11
        • 1970-01-01
        • 2014-09-15
        相关资源
        最近更新 更多