pandas pivot没有得到理想的结果

时间:2017-05-05 20:12:14

标签: pandas tuples pivot-table

我有一个元组列表,我试图将其转换为数据帧。 该列表如下所示:

Handler

我希望每个元组的左边部分代表列,右边代表值。在这种情况下,只有一行作为索引,因为我们只有一行数据

ATM,我并不真正关心索引的标签(不过,我更喜欢它是' AA')

我获得欲望结果的尝试是: 首先创建一个数据框

data =
 ['Previous Close', '38.08'],
 ['Open', '38.23'],
 ['Bid', '37.67 x 100'],
 ['Ask', '38.16 x 500'],
 ["Day's Range", '37.35 - 38.25'],
 ['52 Week Range', '23.50 - 40.92']

产生:

df = pd.DataFrame(data)

然后我尝试使用pivot来获取第0列中的值作为我的列名,将第1列中的值作为第1列的值。它在一定程度上起作用:

     0               1
0   Previous Close  38.08
1   Open            38.23
2   Bid             37.67 x 100
3   Ask             38.16 x 500
4   Day's Range     37.35 - 38.25

但我有太多行。

df.pivot( columns = 0, values =1)

我只想要一行,因为只有一行数据。

1 个答案:

答案 0 :(得分:1)

设置

data = [
    ['Previous Close', '38.08'],
    ['Open', '38.23'],
    ['Bid', '37.67 x 100'],
    ['Ask', '38.16 x 500'],
    ["Day's Range", '37.35 - 38.25'],
    ['52 Week Range', '23.50 - 40.92']
]

选项1

pd.DataFrame(data).set_index(0).T

0 Previous Close   Open          Bid          Ask    Day's Range  52 Week Range
1          38.08  38.23  37.67 x 100  38.16 x 500  37.35 - 38.25  23.50 - 40.92

选项2

c, v = list(zip(*data))
pd.DataFrame([v], columns=c)

  Previous Close   Open          Bid          Ask    Day's Range  52 Week Range
0          38.08  38.23  37.67 x 100  38.16 x 500  37.35 - 38.25  23.50 - 40.92

选项3
Python 3解包
这适用于更多行

c, *v = list(zip(*data))
pd.DataFrame(v, columns=c)

  Previous Close   Open          Bid          Ask    Day's Range  52 Week Range
0          38.08  38.23  37.67 x 100  38.16 x 500  37.35 - 38.25  23.50 - 40.92