我正在尝试将列1转换为数据帧的标题名称,并将列2的值转换为其各自的值:
例如:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
结果数据框将具有:
import pandas as pd
df = pd.DataFrame([(10,'foo'), (20,'bar')])
预期的数据帧:
0 1
0 10 foo
1 20 bar
我是Python的新手,正在这方面寻求帮助。 谢谢
答案 0 :(得分:2)
使用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)
答案 1 :(得分:1)
使用:
L = [(10,'foo'), (20,'bar')]
df = pd.DataFrame([{j:i for i, j in L}])
print (df)
bar foo
0 20 10
答案 2 :(得分:0)
由于您有许多数据点,因此我假设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