Преобразование значения column1 как заголовка и column2 как его значения в пандах

Я пытаюсь преобразовать столбец 1 как имя заголовка фрейма данных и значение столбца 2 как соответствующие значения:

Например:

import pandas as pd
df = pd.DataFrame([(10,'foo'), (20,'bar')])

Полученный фрейм данных будет иметь:

   0    1
0  10  foo
1  20  bar

Ожидаемый фрейм данных:

 foo bar
0 10 20

Я новичок в Python и ищу помощь в этом отношении. Спасибо

это то, что у вас уже есть фрейм данных, или у вас есть только список ??

Onyambu 10.09.2018 10:45

у вас есть только 2 точки данных, как указано выше, или очень много точек данных?

Onyambu 10.09.2018 10:50

У меня много точек данных. У меня уже есть датафрейм.

Raj 10.09.2018 10:55
1
3
28
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Использовать:

L = [(10,'foo'), (20,'bar')]
df = pd.DataFrame([{j:i for i, j in L}])
print (df)
   bar  foo
0   20   10
Ответ принят как подходящий

Использование zip и распаковка последовательности:

L = [(10, 'foo'), (20, 'bar')]
*data, headers = zip(*L)

df = pd.DataFrame(data, columns=headers)

print(df)

   foo  bar
0   10   20

Если у вас есть уже существующий фрейм данных df_input, ваш первый шаг можно переписать:

*data, headers = zip(*df_input.values)

поскольку у вас много точек данных, я бы предположил что-то вроде следующего с предположением, что bar всегда идет после foo

L = [(10, 'foo'), (20, 'bar'),(30,'foo'),(40,'bar'),(5,'foo'),(5,'bar')]
df = pd.DataFrame(L)

Тогда вы сможете:

df.assign(idx = df[1].eq(df.iloc[0,1]).cumsum()).pivot('idx',1,0)

1    bar  foo
idx          
1     20   10
2     40   30
3      5    5

Другие вопросы по теме