小编Fil*_*rda的帖子

熊猫每月滚动操作

在写出这个问题的时候我最终搞清楚了,所以无论如何我都会发帖并回答我自己的问题以防其他人需要一些帮助.

问题

假设我们有一个DataFrame,df包含该数据.

import pandas as pd
from io import StringIO

data = StringIO(
"""\
date          spendings  category
2014-03-25    10         A
2014-04-05    20         A
2014-04-15    10         A
2014-04-25    10         B
2014-05-05    10         B
2014-05-15    10         A
2014-05-25    10         A
"""
)

df = pd.read_csv(data,sep="\s+",parse_dates=True,index_col="date")
Run Code Online (Sandbox Code Playgroud)

目标

对于每一行,总结一个月spendings内的每一行,理想情况下使用它是一个非常干净的语法.DataFrame.rolling

我试过了什么

df = df.rolling("M").sum()
Run Code Online (Sandbox Code Playgroud)

但这引发了一个例外

ValueError: <MonthEnd> is a non-fixed frequency
Run Code Online (Sandbox Code Playgroud)

版: pandas==0.19.2

python pandas

14
推荐指数
2
解决办法
9436
查看次数

Python记录多个模块记录器不在主程序外工作

我的目标是从多个模块进行日志记录,而只在一个地方配置记录器 - 在主程序中.如这个答案所示,应该包括

logging.config.fileConfig('/path/to/logging.conf') 
Run Code Online (Sandbox Code Playgroud)

在主程序中,然后在所有其他模块中包括

logger = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)

我相信这就是我在下面所做的,但我得到了意想不到的行为.

c.py

# c.py
import logging
import logging.config
import d

logging.config.fileConfig("logging.conf")
logger = logging.getLogger(__name__)

logger.warning('logging from c')
d.foo()
Run Code Online (Sandbox Code Playgroud)

d.py

# d.py
import logging

logger = logging.getLogger(__name__)

# this will print when d is imported
logger.warning('logging from d on import')

def foo():
    # this does not print
    logger.warning("logging from d on call foo()")
Run Code Online (Sandbox Code Playgroud)

产量

$ python c.py
logging from d on import
logging from c
Run Code Online (Sandbox Code Playgroud)

我所期望的是,当d.foo()执行时c.py,将记录消息d …

python logging

9
推荐指数
2
解决办法
3932
查看次数

Python mock:包装实例方法

我想要什么: 确保Foowith语句中创建的所有实例都foo通过wraps=Foo.foo. 我想要这个的原因是我可以跟踪创建的所有实例call_count的方法。现在我这么说似乎有点不可能......fooFoo

>>> from mock import patch
...
... class Foo(object):
...
...     def foo(self):
...         return "foo"
...
... with patch("__main__.Foo.foo", wraps=Foo.foo) as m:
...     foo = Foo()
...     print(foo.foo())

Traceback (most recent call last):
  File "a.py", line 12, in <module>
    print(foo.foo())
  File "/disk/software/lib/python27/mock/mock.py", line 1062, in __call__
    return _mock_self._mock_call(*args, **kwargs)
  File "/disk/software/lib/python27/mock/mock.py", line 1132, in _mock_call
    return self._mock_wraps(*args, **kwargs)
TypeError: unbound method foo() must be …
Run Code Online (Sandbox Code Playgroud)

python-2.7 python-mock

7
推荐指数
1
解决办法
3144
查看次数

Sphinx 的默认 Makefile

我试图了解由sphinx-quickstart. 这里是:

SPHINXOPTS    =
SPHINXBUILD   = sphinx-build
SPHINXPROJ    = myproj
SOURCEDIR     = source
BUILDDIR      = build

.PHONY: help Makefile

%: Makefile
    @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
Run Code Online (Sandbox Code Playgroud)

令我困惑的几行是:

.PHONY: help Makefile
%: Makefile
Run Code Online (Sandbox Code Playgroud)

我觉得我懂了:

  1. %目标的手段捕获任何东西(通配符)。例如,如果我输入make html%就会捕获html
  2. .PHONY Makefile意味着不make应该查找Makefile在其目录中调用的文件,因此,不应该检查文件的修改时间来确定是否运行规则。

我不明白:

为什么Makefile被列为目标的先决条件%。我的解释方式是:

捕获的目标规则%应在Makefile更改时运行。

但这在上下文中没有任何意义。我期望的是:

%当项目文档的源文件或 API 源文件发生更改时,应运行捕获的目标规则。

目录结构

.
??? build
??? Makefile
??? source
??? utils
Run Code Online (Sandbox Code Playgroud)

makefile python-sphinx

6
推荐指数
1
解决办法
2594
查看次数

缺少日期的Pandas Date MultiIndex-滚动总和

我有一个看起来像的熊猫系列

Attribute      DateEvent     Value
Type A         2015-04-01    4
               2015-04-02    5
               2015-04-05    3
Type B         2015-04-01    1
               2015-04-03    4
               2015-04-05    1
Run Code Online (Sandbox Code Playgroud)

我的值转换为一个滚动的总和(比方说,过去2天),同时确保以说明我DateEvent指数缺少的日期(假设起始日期和它的结束日期是如何全方位的?(例如,2015-04-032015-04-04是缺少A型,并且2015-04-022015-04-04缺少类型B)。

python indexing datetime pandas

3
推荐指数
1
解决办法
900
查看次数