我有一些带有NaNs的pandas DataFrame.像这样:
import pandas as pd
import numpy as np
raw_data={'A':{1:2,2:3,3:4},'B':{1:np.nan,2:44,3:np.nan}}
data=pd.DataFrame(raw_data)
>>> data
A B
1 2 NaN
2 3 44
3 4 NaN
Run Code Online (Sandbox Code Playgroud)
现在我想用它制作一个字典,同时删除NaN.结果应如下所示:
{'A': {1: 2, 2: 3, 3: 4}, 'B': {2: 44.0}}
Run Code Online (Sandbox Code Playgroud)
但是使用pandas to_dict函数给我一个这样的结果:
>>> data.to_dict()
{'A': {1: 2, 2: 3, 3: 4}, 'B': {1: nan, 2: 44.0, 3: nan}}
Run Code Online (Sandbox Code Playgroud)
那么如何从DataFrame中制作一个字典并摆脱NaN?
因为matplotlib 1.3 matplotlib数字是可以腌制的
当我尝试在stackoverflow上找到一个例子时:
import matplotlib.pyplot as plt
import numpy as np
import pickle
ax = plt.subplot(111)
x = np.linspace(0, 10)
y = np.exp(x)
plt.plot(x, y)
pickle.dump(ax, file('myplot.pickle', 'w'))
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Traceback (most recent call last):
File "D:/Work/Programming/Experimental/picklematplotlib/main.py", line 15, in <module>
pickle.dump(ax, file)
File "C:\Python32\lib\site-packages\six.py", line 116, in __getattr__
_module = self._resolve()
File "C:\Python32\lib\site-packages\six.py", line 105, in _resolve
return _import_module(self.mod)
File "C:\Python32\lib\site-packages\six.py", line 76, in _import_module
__import__(name)
File "C:\Python32\lib\dbm\gnu.py", line 3, in <module>
from _gdbm import *
ImportError: …Run Code Online (Sandbox Code Playgroud) 我正在使用这个:
from win32com.client import Dispatch
excel_file = Dispatch("Excel.Application")
excel_file.Workbooks.Open(excel_result_path)
excel_file.Visible = 1
mySheet = excel_file.Worksheets.Add()
mySheet.Name = "name"
Run Code Online (Sandbox Code Playgroud)
效果很好。唯一的问题是,如果工作表已经存在,我会收到一条错误消息,告诉我该工作表已经存在
文件“..\dynamic.py”,第 554 行,setattr pywintypes.com_error : (-2147352567, 'Ausnahmefehler aufgetreten.', (0, 'Microsof t Excel', 'Kann einem Blatt nicht den gleichen Namen geben wie einem anderen Bla tt,einer Objektbibliothek oder einer Arbeitsmappe,auf die Visual Basic Bezug n immt。','xlmain11.chm',0,-2146827284),无)
所以我的问题是,如何检查 excel-sheet-name allready 是否存在?