我可以将StringIO对象传递给pd.to_csv()就好了:
io = StringIO.StringIO()
pd.DataFrame().to_csv(io)
Run Code Online (Sandbox Code Playgroud)
但是当使用excel编写器时,我遇到了很多麻烦.
io = StringIO.StringIO()
writer = pd.ExcelWriter(io)
pd.DataFrame().to_excel(writer,"sheet name")
writer.save()
Run Code Online (Sandbox Code Playgroud)
返回一个
AttributeError: StringIO instance has no attribute 'rfind'
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个ExcelWriter没有调用的对象pd.ExcelWriter()但是遇到了一些麻烦.这是我到目前为止所尝试的:
from xlsxwriter.workbook import Workbook
writer = Workbook(io)
pd.DataFrame().to_excel(writer,"sheet name")
writer.save()
Run Code Online (Sandbox Code Playgroud)
但现在我得到了一个 AttributeError: 'Workbook' object has no attribute 'write_cells'
如何将excel格式的pandas数据帧保存到StringIO对象?
我有一个包含多个级别的数据框,例如:
idx = pd.MultiIndex.from_product((['foo', 'bar'], ['one', 'five', 'three' 'four']),
names=['first', 'second'])
df = pd.DataFrame({'A': [np.nan, 12, np.nan, 11, 16, 12, 11, np.nan]}, index=idx).dropna().astype(int)
A
first second
foo five 12
four 11
bar one 16
five 12
three 11
Run Code Online (Sandbox Code Playgroud)
我想使用标题为索引级别创建一个新列second,以便我得到
A B
first second
foo five 12 five
four 11 four
bar one 16 one
five 12 five
three 11 three
Run Code Online (Sandbox Code Playgroud)
我可以通过重置索引,复制列,然后重新应用来做到这一点,但这似乎更圆.
我试过了df.index.levels[1],但是创建了一个排序列表,它不保留顺序.
如果它是单个索引,我会使用df.index但在多索引中创建一列元组.
如果这在其他地方得到解决,请分享,因为我没有运气搜索stackoverflow档案.
我已经修复了导致DataError的错误,但我不能为我的生活找出如何明确地捕获它:
try:
df["my column"] = df.baddata + df.morebaddata
except DataError:
print "Caught Error!"
Run Code Online (Sandbox Code Playgroud)
得到: NameError: name 'DataError' is not defined
然后我尝试pd.core.frame.DataError并收到了AttributeError.我也试过谷歌搜索,但找不到大熊猫错误类型的列表.什么是正确的路径DataError?