Слияние нескольких серий в петле в пандах - PullRequest
0 голосов
/ 02 октября 2018

Итак, у меня есть список серий следующим образом:

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 ]

0 голосов
/ 02 октября 2018

Это pandas.concat ... объект DataFrame не имеет этого атрибута.Попробуйте pandas.concat ((df1, df2)), или как там у вас есть данные.Как заметил Джезраэль, pd.concat использует любой интервал данных, поэтому просто передайте параметр axis = 1 для объединения по столбцам.

0 голосов
/ 02 октября 2018

Если groupdf1 - это список DataFrame с, используйте 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)]
...