我需要类似的东西defaultdict.但是,对于任何不在字典中的键,它应该返回键本身.
最好的方法是什么?
如何让堆栈帧进入traceback.print_stack?
traceback.print_stack(f=None, limit=None, file=None)此函数从其调用点打印堆栈跟踪.可选
f参数可用于指定要启动的备用堆栈帧.可选的limit和file参数具有相同的含义print_exception().
但是在文档中没有找到实际获得堆栈帧的方法.具体来说,假设我想打印从调用点上方一层开始的堆栈跟踪.我怎样才能做到这一点?
我的班级代表各种系统的状态.每个实例都有两个属性:一个是在同一系统的所有状态之间共享的容器,另一个是每个实例唯一的容器.
状态的副本应该重用"共享"属性,但要创建"唯一"属性的深层副本.这实际上是唯一有意义的复制语义(状态的副本是同一系统的状态是很自然的).
我想为阅读和维护我的代码的人创造最少的惊喜.我应该覆盖__deepcopy__还是__copy__为了我的目的?
鼻子支持测试生成器.但文件说:
请注意,unittest.TestCase子类不支持方法生成器
这意味着我的所有测试生成器都必须在unittest框架之外.
问题:我是否仍然可以使用unittest框架进行测试?或者,出于一致性原因,我应该unittest完全放弃吗?
为什么不nose支持测试生成器unittest.TestCase?这似乎破坏最大的优势nose:它是一个扩展,而不是替代的unittest,因此没有带走任何的所提供的功能,提供了额外的好处unittest.或者我错过了什么?
还有一个相关的问题.如果我unittest完全抛弃,我应该将我的测试放入全局函数还是新的类层次结构?
我们有一个项目,其中包含数据和代码,捆绑到一个Mercurial存储库中.数据与代码一样重要(它包含业务逻辑,一些输入等的参数)但是,数据文件的格式很少变化,并且很自然地独立于代码更改数据文件.
统一存储库的一个优点是我们不必跟踪多个修订:如果我们需要重新创建先前运行的输出,我们只需要将系统更新为存储在输出日志中的单个修订版号.
一个缺点是,如果我们在多个磁头处于活动状态时修改数据,我们可能会丢失数据更改,除非我们手动将这些更改复制到每个磁头.
将代码和数据拆分为单独的存储库是否还有其他优缺点?
如何找到给定类是"虚拟子类"的所有抽象基类?
换句话说,我正在寻找一个virtual_base_classes()像这样的魔术函数:
>>> for cls in virtual_base_classes(list):
>>> print(cls)
<class 'collections.abc.MutableSequence'>
<class 'collections.abc.Sequence'>
<class 'collections.abc.Sized'>
<class 'collections.abc.Iterable'>
<class 'collections.abc.Container'>
Run Code Online (Sandbox Code Playgroud)
(我不知道所有注册的abc类list,所以上面的例子可能不完整.)
请注意,并非每个抽象基类都将被定义collections.abc.有一个模块abc(不同于collections.abc)提供了元类ABCMeta.任何类都是ABCMeta使用标准接口(register方法)支持"虚拟子类"注册的实例.没有什么可以阻止某人(程序员或Python库)创建一个ABCMeta不属于的实例collections.abc.
使用 python 3.5.1。以及当前使用 git 安装的 mypy,mypy 标记错误 1 和 2,但未报告 3
我做错了什么,或者这是一个错误,还是一个已知的问题?
import typing
def test_ordered_dict(od: typing.Dict[str,int]) -> typing.Dict[str,int]:
return 1 #type error 1
a = test_ordered_dict(1) #type error 2
def test_me():
a = test_ordered_dict(1) # type error 3 is not reported
Run Code Online (Sandbox Code Playgroud) DataFrameGroupby.filter方法过滤组,并返回DataFrame包含通过过滤器的行的组.
但是我该怎么做才能获得一个新的DataFrameGroupBy物体而不是DataFrame后过滤?
例如,假设我有DataFrame df两列A和B.我希望获得列B的每个值的列的平均值A,只要该组中至少有5行:
# pandas 0.18.0
# doesn't work because `filter` returns a DF not a GroupBy object
df.groupby('A').filter(lambda x: len(x)>=5).mean()
# works but slower and awkward to write because needs to groupby('A') twice
df.groupby('A').filter(lambda x: len(x)>=5).reset_index().groupby('A').mean()
# works but more verbose than chaining
groups = df.groupby('A')
groups.mean()[groups.size() >= 5]
Run Code Online (Sandbox Code Playgroud) 我正在尝试了解DataFrame列类型.当然,DataFrame不是物化对象,它只是Spark的一组指令,将来转换为代码.但我想象这个类型列表表示在执行操作时可能在JVM内部实现的对象类型.
import pyspark
import pyspark.sql.types as T
import pyspark.sql.functions as F
data = [0, 3, 0, 4]
d = {}
d['DenseVector'] = pyspark.ml.linalg.DenseVector(data)
d['old_DenseVector'] = pyspark.mllib.linalg.DenseVector(data)
d['SparseVector'] = pyspark.ml.linalg.SparseVector(4, dict(enumerate(data)))
d['old_SparseVector'] = pyspark.mllib.linalg.SparseVector(4, dict(enumerate(data)))
df = spark.createDataFrame([d])
df.printSchema()
Run Code Online (Sandbox Code Playgroud)
四个向量值的列在printSchema()(或schema)中看起来相同:
root
|-- DenseVector: vector (nullable = true)
|-- SparseVector: vector (nullable = true)
|-- old_DenseVector: vector (nullable = true)
|-- old_SparseVector: vector (nullable = true)
Run Code Online (Sandbox Code Playgroud)
但是当我逐行检索它们时,它们会变得不同:
> for x in df.first().asDict().items():
print(x[0], type(x[1]))
(2) Spark Jobs
old_SparseVector …Run Code Online (Sandbox Code Playgroud) dataframe apache-spark pyspark apache-spark-ml apache-spark-mllib
由于matplotlib不支持任何pandas.TimeStamp 或者numpy.datetime64,有没有简单的解决办法,我决定到本地大熊猫日期列转换为纯Python datetime.datetime,这样散点图更容易做出。
然而:
t = pd.DataFrame({'date': [pd.to_datetime('2012-12-31')]})
t.dtypes # date datetime64[ns], as expected
pure_python_datetime_array = t.date.dt.to_pydatetime() # works fine
t['date'] = pure_python_datetime_array # doesn't do what I hoped
t.dtypes # date datetime64[ns] as before, no luck changing it
Run Code Online (Sandbox Code Playgroud)
我猜大熊猫自动转换纯Pythondatetime所生产to_pydatetime到其原生格式。我想这通常是方便的行为,但有没有办法覆盖它?
python ×8
python-3.x ×7
dataframe ×2
pandas ×2
abc ×1
apache-spark ×1
copy ×1
datetime ×1
deep-copy ×1
dictionary ×1
dvcs ×1
grouping ×1
mercurial ×1
mypy ×1
nose ×1
pyspark ×1
stack-trace ×1
subclass ×1
unit-testing ×1