Я пытаюсь преобразовать столбец 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 и ищу помощь в этом отношении. Спасибо
у вас есть только 2 точки данных, как указано выше, или очень много точек данных?
У меня много точек данных. У меня уже есть датафрейм.
Использовать:
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
это то, что у вас уже есть фрейм данных, или у вас есть только список ??