may*_*ull 13 python dictionary pandas
我有一个类似下面的字典
defaultdict(list,
{'Open': ['47.47', '47.46', '47.38', ...],
'Close': ['47.48', '47.45', '47.40', ...],
'Date': ['2016/11/22 07:00:00', '2016/11/22 06:59:00','2016/11/22 06:58:00', ...]})
Run Code Online (Sandbox Code Playgroud)
我的目的是将此字典转换为数据帧,并将"日期"键值设置为数据帧的索引.
我可以通过以下命令完成这项工作
df = pd.DataFrame(dictionary, columns=['Date', 'Open', 'Close'])
0 Date Open Close
1 2016/11/22 07:00:00 47.47 47.48
2 2016/11/22 06:59:00 47.46 47.45
3 2016/11/22 06:58:00 47.38 47.38
df.index = df.Date
Date Date Open Close
2016/11/22 07:00:00 2016/11/22 07:00:00 47.47 47.48
2016/11/22 06:59:00 2016/11/22 06:59:00 47.46 47.45
2016/11/22 06:58:00 2016/11/22 06:58:00 47.38 47.38
Run Code Online (Sandbox Code Playgroud)
但是,我有两个'Date'列,其中一列是索引,另一列是原始列.
有没有办法在将字典转换为数据帧时设置索引,而不像下面那样重叠列?
Date Close Open
2016/11/22 07:00:00 47.48 47.47
2016/11/22 06:59:00 47.45 47.46
2016/11/22 06:58:00 47.38 47.38
Run Code Online (Sandbox Code Playgroud)
谢谢您阅读此篇!:)
jez*_*ael 15
用途set_index:
df = pd.DataFrame(dictionary, columns=['Date', 'Open', 'Close'])
df = df.set_index('Date')
print (df)
Open Close
Date
2016/11/22 07:00:00 47.47 47.48
2016/11/22 06:59:00 47.46 47.45
2016/11/22 06:58:00 47.38 47.40
Run Code Online (Sandbox Code Playgroud)
或使用inplace:
df = pd.DataFrame(dictionary, columns=['Date', 'Open', 'Close'])
df.set_index('Date', inplace=True)
print (df)
Open Close
Date
2016/11/22 07:00:00 47.47 47.48
2016/11/22 06:59:00 47.46 47.45
2016/11/22 06:58:00 47.38 47.40
Run Code Online (Sandbox Code Playgroud)
另一种可能的解决方案dict是Date按键过滤,然后通过dictionary['Date']以下方式设置
df = pd.DataFrame({k: v for k, v in dictionary.items() if not k == 'Date'},
index=dictionary['Date'],
columns=['Open','Close'])
df.index.name = 'Date'
print (df)
Open Close
Date
2016/11/22 07:00:00 47.47 47.48
2016/11/22 06:59:00 47.46 47.45
2016/11/22 06:58:00 47.38 47.40
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8367 次 |
| 最近记录: |