没有得到熊猫枢轴想要的结果
问题描述:
我有一个元组列表,我试图变成一个数据框。 名单如下:没有得到熊猫枢轴想要的结果
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']
我想每个元组的左侧部分代表柱和代表值的权利。在这种情况下,将只有一行作为索引,因为我们只有一行数据
ATM,我并不真正关心索引的标签(尽管我更喜欢它是'AA')
我在得到渴望的结果尝试为: 首先创建一个数据帧
df = pd.DataFrame(data)
它生产:
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
然后我试图使用数据透视表来获取第0列的值作为我的列名,第1列的值作为第1列的值。它在一定程度上工作:
df.pivot(columns = 0, values =1)
但我有太多的行。
1y Target Est 52 Week Range Ask Avg. Volume ..............
0 None None None None None None None None None
1 None None None None None None None None None
2 None None None None None None None None None
3
4 $58
我只想要一行,因为只有一行数据。
答
设置
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
感谢=)工作。我会使用第一个,但其他人是一个很好的参考工具 - 去书签。 只是为了澄清,set_index(0)标记索引的第一行为0? – Moondra
您的数据布局方式与您希望数据框的方式相关,您希望作为列标题的内容是每行的第一个元素。另外,当我在'data'上调用'pd.DataFrame'时,我没有指定'columns',所以我得到了默认值。这意味着第一个元素获得第一列的位置。因此,'df.set_index(0)'取得第一列并将其转换为索引。然后我用'.T'转置 – piRSquared
啊,我明白了。谢谢〜 – Moondra