在熊猫中将Column1值转换为标头,将column2转换为其值

时间:2018-09-10 08:40:49

标签: python python-3.x pandas list

我正在尝试将列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的新手,正在这方面寻求帮助。 谢谢

3 个答案:

答案 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