日期最终出现在单元格的右下角,显然忽略了 xlsxwriter 的对齐设置。一个MWE:
import pandas
df = pandas.DataFrame(
{
"ints": [1, 2, 3]
, 'primes': [2, 3, 5]
, 'odds': [1, 3, 5]
, 'fechas': ['2017-04-07', '2017-05-09', '2017-11-30']
}
)
df['fechas'] = pandas.to_datetime(df['fechas']).dt.date
print(df)
xlsx_writer = pandas.ExcelWriter(
'test.xlsx'
, engine='xlsxwriter'
, date_format='mm/dd/yyyy'
)
df.to_excel(xlsx_writer, sheet_name='Sheet1', index=False)
wb = xlsx_writer.book
ws = xlsx_writer.sheets['Sheet1']
dollar_format = '_($* #,##0.00" "_);_($* (#,##0.0);_($* "-"??_);_(@_)'
dollar_format_wb = wb.add_format({'num_format': dollar_format, 'valign': 'vcenter'})
centre_format_wb = wb.add_format({'align': 'center', 'valign': 'vcenter'})
ws.set_column('A:A', 25, centre_format_wb)
ws.set_column('B:B', 20, centre_format_wb)
ws.set_column('C:C', 15, centre_format_wb) …Run Code Online (Sandbox Code Playgroud) 我正在尝试非常简单地将 PyMC3 traceplot 函数(请参阅此处)生成的子图绘制到文件中。
该函数生成子图的 numpy.ndarray (2d)。
我需要将这些子图移动或复制到 matplotlib.figure 中才能保存图像文件。我能找到的所有内容都展示了如何首先生成图形的子图,然后构建它们。
作为一个最小的示例,我从Here提取了示例 PyMC3 代码,并在其中添加了几行以尝试处理子图。
from pymc3 import *
import theano.tensor as tt
from theano import as_op
from numpy import arange, array, empty
### Added these three lines relative to source #######################
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
__all__ = ['disasters_data', 'switchpoint', 'early_mean', 'late_mean', 'rate', 'disasters']
# Time series of recorded coal mining disasters in the UK from 1851 to 1962
disasters_data = array([4, 5, 4, …Run Code Online (Sandbox Code Playgroud) 希望这不是深夜效应,但我被一个非常简单的问题难住了:
def test_getattr(v0):
v1 = "test1"
v2 = "test2"
v3 = "test3"
for k, v in locals().items():
print(k, v)
print(getattr(locals(), 'v1'))
test_getattr("test0")
Run Code Online (Sandbox Code Playgroud)
输出按预期给出 locals() dict 项目:
v0 测试0
v3
测试3 v1 测试1
v2测试2
但随后死亡:
AttributeError: 'dict' 对象没有属性 'v1'
V1明显地是在局部变量()“字典”,每初始输出,但随后GETATTR()否则坚持。
这是我第一次需要使用 locals(),但我能找到的每一份文档都表明这应该有效。我错过了什么?
编辑/更新:非常感谢@martijn 在下面的回答。我设法通过将局部变量暂时分配给一个虚拟类来在 getattr() 中使用动态局部变量:
class Attr:
pass
def test_getattr(v0):
A = Attr()
A.v1 = "test1"
#etc
print(getattr(A, "v1"))
Run Code Online (Sandbox Code Playgroud)