Nik*_*pta 5 python csv dictionary
我正在使用多个.csv文件生成一个字典,它看起来像这样(示例):
dtDict = {'AV-IM-1-13991730': {'6/1/2014 0:10': '0.96',
'6/1/2014 0:15': '0.92',
'6/1/2014 0:20': '0.97'},
'AV-IM-1-13991731': {'6/1/2014 0:10': '1.96',
'6/1/2014 0:15': '1.92',
'6/1/2014 0:20': '1.97'},
'AV-IM-1-13991732': {'6/1/2014 0:10': '2.96',
'6/1/2014 0:15': '2.92',
'6/1/2014 0:20': '2.97'},
'AV-IM-1-13991733': {'6/1/2014 0:10': '3.96',
'6/1/2014 0:15': '3.96',
'6/1/2014 0:20': '3.97'}}
Run Code Online (Sandbox Code Playgroud)
我想以下列格式将其保存为.csv文件:
timestamp,AV-IM-1-13991730,AV-IM-1-13991731,AV-IM-1-13991732,AV-IM-1-13991733
6/1/2014 0:10,0.96,1.96,2.96,3.96
6/1/2014 0:15,0.92,1.92,2.92,3.96
6/1/2014 0:20,0.97,1.97,2.97,3.97
Run Code Online (Sandbox Code Playgroud)
我到目前为止的一段代码(与此目标相关):
header = '''# file...... Recorder file
# date...... Thu Mar 12 14:35:32 2015
# user...... Sri
# host...... (null)
# group..... None
# property.. AVA Measurements
# limit.....
# interval..'''
testpower = open("custpower.csv",'w')
testpower.writelines([header,'\n','# timestamp\n'])
...
for key, value in dtDict.iteritems():
#Still trying to figure out how to write to custpower.csv
Run Code Online (Sandbox Code Playgroud)
我尝试过类似的事情:
for key, value in dtDict.iteritems():
testpower.writelines([key,',',','.join(value),'\n'])
Run Code Online (Sandbox Code Playgroud)
但它并没有完全按照我的意图去做.
如果你可以使用,那就太简单了pandas.
import pandas as pd
data = {'AV-IM-1-13991730': {'6/1/2014 0:10': '0.96',
'6/1/2014 0:15': '0.92',
'6/1/2014 0:20': '0.97'},
'AV-IM-1-13991731': {'6/1/2014 0:10': '1.96',
'6/1/2014 0:15': '1.92',
'6/1/2014 0:20': '1.97'},
'AV-IM-1-13991732': {'6/1/2014 0:10': '2.96',
'6/1/2014 0:15': '2.92',
'6/1/2014 0:20': '2.97'},
'AV-IM-1-13991733': {'6/1/2014 0:10': '3.96',
'6/1/2014 0:15': '3.96',
'6/1/2014 0:20': '3.97'}}
df = pd.DataFrame(data)
df.to_csv(PATH_TO_OUTPUT_FILE)
Run Code Online (Sandbox Code Playgroud)
df 成为一个看起来像的DataFrame
AV-IM-1-13991730 AV-IM-1-13991731 AV-IM-1-13991732 AV-IM-1-13991733
6/1/2014 0:10 0.96 1.96 2.96 3.96
6/1/2014 0:15 0.92 1.92 2.92 3.96
6/1/2014 0:20 0.97 1.97 2.97 3.97
Run Code Online (Sandbox Code Playgroud)
你得到的csv看起来像
,AV-IM-1-13991730,AV-IM-1-13991731,AV-IM-1-13991732,AV-IM-1-13991733
6/1/2014 0:10,0.96,1.96,2.96,3.96
6/1/2014 0:15,0.92,1.92,2.92,3.96
6/1/2014 0:20,0.97,1.97,2.97,3.97
Run Code Online (Sandbox Code Playgroud)
熊猫也很好,因为你可以这样做:
df.convert_objects(convert_numeric=True).plot()
# the converts change "0.97" -> 0.97 so it's plottable
Run Code Online (Sandbox Code Playgroud)
要得到:

| 归档时间: |
|
| 查看次数: |
4105 次 |
| 最近记录: |