我正在努力将我的嵌套字典(由 for 循环创建)放入 Pandas。
list_of_instruments = ["Gold", "Nasdaq", "Dow Jones", "SP500"]
instruments = {}
for instrument in list_of_instruments:
instruments[instrument] = {'ig_name': "", 'latest_close': 0, 'latest_close_date': 0, 'intraday_bid': 0}
df = pd.DataFrame(instruments).T
print(df)
给我以下内容
ig_name latest_close latest_close_date intraday_bid
OMXS30 0 0 0
Nasdaq 0 0 0
Dow Jones 0 0 0
SP500 0 0 0
这基本上就是我想要的,第一列没有命名的小问题。我已经尝试了几种不同的解决方案,但无法想出一些有效的方法。而是肯定有一个比较简单的解决方案(这并不像我对“.T”所做的那样涉及转置数据帧)。我似乎无法理解。
有什么想法或建议吗?
答案 0 :(得分:1)
因为那是 index
。
您可以将 index name
设置为:df.index.name = 'Index Column'
输出:
ig_name latest_close latest_close_date intraday_bid
Index Column
Gold 0 0 0
Nasdaq 0 0 0
Dow Jones 0 0 0
SP500 0 0 0
或者,如果您愿意,您可以将第一列作为基于整数索引的单独列:
df.reset_index().rename(columns={'index':'Index Column'})
输出:
Index Column ig_name latest_close latest_close_date intraday_bid
0 Gold 0 0 0
1 Nasdaq 0 0 0
2 Dow Jones 0 0 0
3 SP500 0 0 0
答案 1 :(得分:1)
第一列如你所说,不是一个,是index
,你可以命名,或者将索引设置为数字,你的乐器名称就变成了像其他人一样的真实专栏
设置索引名称
df = pd.DataFrame(instruments).T
df.index.name = 'instrument'
ig_name latest_close latest_close_date intraday_bid
instrument
Gold 0 0 0
Nasdaq 0 0 0
Dow Jones 0 0 0
SP500 0 0 0
从索引中删除
df = pd.DataFrame(instruments).T.reset_index().rename(columns={'index': 'instrument'})
instrument ig_name latest_close latest_close_date intraday_bid
0 Gold 0 0 0
1 Nasdaq 0 0 0
2 Dow Jones 0 0 0
3 SP500 0 0 0
或者以不同的方式构建您的数据
instruments = [
{'instrument': i, 'ig_name': "", 'latest_close': 0, 'latest_close_date': 0, 'intraday_bid': 0}
for i in list_of_instruments
]
df = pd.DataFrame(instruments)
instrument ig_name latest_close latest_close_date intraday_bid
0 Gold 0 0 0
1 Nasdaq 0 0 0
2 Dow Jones 0 0 0
3 SP500 0 0 0
答案 2 :(得分:1)
我认为您可以使用此代码来完成。
df = pd.DataFrame.from_dict(instruments, orient='index')
答案 3 :(得分:1)
import pandas as pd
import numpy as np
list_of_instruments = ["Gold", "Nasdaq", "Dow Jones", "SP500"]
n = len(list_of_instruments)
df = pd.DataFrame({'ig_name': list_of_instruments,
'latest_close': np.zeros(n),
'latest_close_date': np.zeros(n),
'intraday_bid': np.zeros(n)})
print(df)
您将 index
用作 list_of_instruments
,这似乎不是您想要的。