Как установить имена столбцов с помощью DataFrame.T - PullRequest
0 голосов
/ 24 августа 2018

У меня есть фрейм данных, который я узнал, что могу «перевернуть» с помощью df.T, но мне интересно, как добавить новые имена столбцов одновременно с транспонированием фрейма данных.

Мойданные выглядят так:

dict = {"a":[1,2,3,4],
        "b":['A','B','C','D'],
        "c":['day','night','day','day']}

df = pd.DataFrame(dict)

   a  b      c
0  1  A    day
1  2  B  night
2  3  C    day
3  4  D    day

И с df.T вот так:

df.T
     0      1    2    3
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day

Но я пытаюсь (и не могу) изменить заголовки с помощью transpose следующим образом:

dfT = df.T(headers = df['b'])
dfT = df.T.columns = df['b']   

Мой желаемый результат - иметь это, в то же время я транспонирую:

     A      B    C    D
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day

Возможно ли это с помощью df.T?

Спасибо!

Ответы [ 4 ]

0 голосов
/ 27 декабря 2018

Вы можете использовать это:

df.set_index(df['b']).T

Примечание. Вы создаете новую серию, равную столбцу b в кадре данных, и не перемещаете столбец 'b' в индекс.

b    A      B    C    D
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day

И, чтобы удалить column.name, вы можете использовать:

df.set_index(df['b']).rename_axis(None).T

Вывод:

     A      B    C    D
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day
0 голосов
/ 24 августа 2018

Вы можете сделать это, используя переименовать :

dfT = df.T.rename(columns=df.b)

>>> dfT
     A      B    C    D
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day
0 голосов
/ 24 августа 2018

set_index до транспонирования

df.set_index('b').T

b    A      B    C    D
a    1      2    3    4
c  day  night  day  day

Однако, это перемещает строку.

drop=False

df.set_index('b', drop=False).T

b    A      B    C    D
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day

set_axis после транспонирования.

df.T.set_axis(df.b, axis=1, inplace=False)

b    A      B    C    D
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day

В будущем Pandas.DataFrame.set_axis будет иметь inplace=False в качестве значения аргумента по умолчанию, и это может быть просто

df.T.set_axis(df.b, 1)
0 голосов
/ 24 августа 2018

Довольно просто

dfT = df.T
dfT.columns = df['b'].values

     A      B    C    D
a    1      2    3    4
b    A      B    C    D
c  day  night  day  day
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...