Транспонировать кадр данных pandas с заголовками в виде столбца, а не индекса - PullRequest
0 голосов
/ 23 октября 2018

Когда я транспонирую фрейм данных, заголовки по умолчанию считаются «индексами».Но я хочу, чтобы это был столбец, а не индекс.Как мне этого добиться?

import pandas as pd
dict = {'col-a': [97, 98, 99],
        'col-b': [34, 35, 36],
        'col-c': [24, 25, 26]}

df = pd.DataFrame(dict)
print(df.T)

        0   1   2
col-a  97  98  99
col-b  34  35  36
col-c  24  25  26

Желаемый вывод:

        0   1   2   3
  0  col-a  97  98  99
  1  col-b  34  35  36
  2  col-c  24  25  26

Ответы [ 2 ]

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

Попробуйте T с reset_index:

df=df.T.reset_index()
print(df)

Или:

df.T.reset_index(inplace=True)
print(df)

Оба Вывод:

   index   0   1   2
0  col-a  97  98  99
1  col-b  34  35  36
2  col-c  24  25  26

Если заботятся об именах столбцов,добавьте это к коду:

df.columns=range(4)

Или:

it=iter(range(4))
df=df.rename(columns=lambda x: next(it))

Или, если не знаете количество столбцов:

df.columns=range(len(df.columns))

Или:

it=iter(range(len(df.columns)))
df=df.rename(columns=lambda x: next(it))

Весь вывод:

       0   1   2   3
0  col-a  97  98  99
1  col-b  34  35  36
2  col-c  24  25  26
0 голосов
/ 23 октября 2018

Используйте reset_index, а затем задайте имена столбцов по умолчанию:

df1 = df.T.reset_index()
df1.columns = np.arange(len(df1.columns))
print (df1)
       0   1   2   3
0  col-a  97  98  99
1  col-b  34  35  36
2  col-c  24  25  26

Другое решение:

print (df.rename_axis(0, axis=1).rename(lambda x: x + 1).T.reset_index())
#alternative
#print (df.T.rename_axis(0).rename(columns = lambda x: x + 1).reset_index())
       0   1   2   3
0  col-a  97  98  99
1  col-b  34  35  36
2  col-c  24  25  26
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...