如果我添加两列来创建第三列,那么任何包含NaN(代表我的世界中缺少数据)的列都会导致生成的输出列也是NaN.有没有办法在没有明确地将值设置为0的情况下跳过NaN(这会失去那些值"缺失"的概念)?
In [42]: frame = pd.DataFrame({'a': [1, 2, np.nan], 'b': [3, np.nan, 4]})
In [44]: frame['c'] = frame['a'] + frame['b']
In [45]: frame
Out[45]:
a b c
0 1 3 4
1 2 NaN NaN
2 NaN 4 NaN
Run Code Online (Sandbox Code Playgroud)
在上面,我希望列c为[4,2,4].
谢谢...
只是检查是否有人正在监听已经为Pandas生成了一组工作的mypy/typeshed存根.我天真地在本地Pandas安装上运行stubgen,这会产生一些错误.我可以继续我的开始,但希望其他人进一步推动球.(在GitHub上没有明显的东西,尽管有一个旧的存根票.)
我一直在服务器中使用pandas DataFrame对象,将它们转换为CSV以传输到浏览器,其中使用d3绘制表格值.尽管CSV是文件,但我真的需要的不仅仅是2D数据表.如果不出意外,我想返回一些有关数据的元数据.
所以我开始搞乱JSON思考我可以用一些元信息和我的DataFrame构建一个字典.例如,就像一个荒谬的简单例子:
>>> z = numpy.zeros(10)
>>> df = pandas.DataFrame(z)
>>> df
0
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
>>> result = {
... "name": "Simple Example",
... "data": df,
... }
Run Code Online (Sandbox Code Playgroud)
毫不奇怪,无法使用json模块直接序列化.我找到了jsonext模块并试了一下.它"有效",但产生不完整的结果:
>>> jsonext.dumps(result)
'{"data": ["0"], "name": "Simple Example"}'
Run Code Online (Sandbox Code Playgroud)
看看DataFrame本身为这种方法提供的方法,我找到了to_dict()和to_json().前者生成词典词典:
>>> df.to_dict()
{0: {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0, 5: 0.0, 6: 0.0, 7: 0.0, 8: 0.0, 9: 0.0}}
Run Code Online (Sandbox Code Playgroud)
但正如您所看到的,它们无法序列化为JSON,因为键不是字符串. …
我有一个 C++ 中的单例类(没有公共构造函数,C++ 程序员调用 class.instance() 来创建单例或返回现有的单例)。
我更愿意在 Python 级别隐藏它。如果我正在编写一个 Python 单例,我会在__new__. 如果一个类没有公共构造函数,我认为我无法创建__init__包装器(我的尝试失败了)。我在 pybind11 文档中没有看到提及__new__(尽管可能错过了它,并且 Google 似乎很乐意省略下划线包含“new”的返回页面,但没有提及__new__)。
pybind11(甚至Boost.Python)有单例配方吗?
我有一个在“始终免费”级别上运行的小网站。它非常适合我的需求。试用期结束后(并且我没有使用任何收费资源),我又恢复到“始终免费”。这可以。今天早上,我收到一封电子邮件,部分内容如下:
只要您积极使用您的帐户,您就可以继续使用您的“始终免费”资源。
但没有定义“积极使用您的帐户”的含义。我只是想和某人在线聊天,但这对我来说是不可能的。我尝试使用他们的社区论坛,但他们的登录似乎失败了,所以我来到了这里。(无意冒犯,但我的印象是这主要是针对开发问题。)
网站运行是否足以符合“活跃使用”的条件?我需要定期登录控制台吗?无论用途如何,什么才算“活跃”?例如,如果我需要定期登录控制台,我需要多久登录一次?每周?每月?
我必须遗漏一些关于Bash读命令的非常基本的东西.在shell提示符下,无法将三个输入字段分配给相应的变量:
% echo a b c | read x1 x2 x3
% echo $x1 $x2 $x3
%
Run Code Online (Sandbox Code Playgroud)
这有效:
% echo a b c | while read x1 x2 x3 ; do
> echo $x1 $x2 $x3
> done
a b c
%
Run Code Online (Sandbox Code Playgroud)
我只需阅读一行输入.这里使用while循环是不正确的,因为当循环的子进程退出时,我丢失了x1,x2和x3的值.我必须将所有访问它们的代码放在循环体内(并且可能在最后打破,为了"清晰"),这似乎非常hackish.在if命令中使用它也可以,但是遇到与while循环相同的子进程问题:
% echo a b c | if read x1 x2 x3 ; then echo $x1 $x2 $x3; fi
a b c
% echo $x1
Run Code Online (Sandbox Code Playgroud)
BASH_VERSION报告为"4.2.45(1)-release".
我正在尝试在 NaT 中获取包含 datetime64 数据的几个 Pandas Series 对象的最小值和最大值。如果 dtype 是 float64,np.minimum 和 np.maximum 按我想要的方式工作。也就是说,一旦比较中的任何元素为 NaN,NaN 将是该比较的结果。例如:
>>> s1
0 0.0
1 1.8
2 3.6
3 5.4
dtype: float64
>>> s2
0 10.0
1 17.0
2 NaN
3 14.0
dtype: float64
>>> np.maximum(s1, s2)
0 10.0
1 17.0
2 NaN
3 14.0
dtype: float64
>>> np.minimum(s1, s2)
0 0.0
1 1.8
2 NaN
3 5.4
dtype: float64
Run Code Online (Sandbox Code Playgroud)
如果 s1 和 s2 是 datetime64 对象,则此方法不起作用:
>>> s1
0 2199-12-31
1 2199-12-31
2 …Run Code Online (Sandbox Code Playgroud) 我正在 Ubuntu 18.04 系统上为 Python 3.8 复制我的 Python 3.7 Conda 环境。我从一个简单的 jane Conda env 开始,python=3.8 作为唯一要求。然后我开始从我的 3.7 环境安装软件包。
大部分过程进行得很顺利,但 matplotlib 失败了。Conda 搜索显示 matplotlib 的 3.8 版本,但 conda install 命令无法解析一组不冲突的包。Numpy、ipython 等都安装得很好。在旋转了这个多刺的小东西之后,它抱怨道:
UnsatisfiableError: The following specifications were found to be incompatible with each other:
Package python conflicts for:
python=3.8
Package pip conflicts for:
python=3.8 -> pip
matplotlib -> python[version='>=3.7,<3.8.0a0'] -> pip
Package certifi conflicts for:
python=3.8 -> pip -> setuptools -> certifi[version='>=2016.09|>=2016.9.26']
Package wheel conflicts for:
python=3.8 -> pip -> wheel
matplotlib …Run Code Online (Sandbox Code Playgroud) python ×5
pandas ×4
numpy ×2
anaconda ×1
bash ×1
datetime ×1
input ×1
json ×1
matplotlib ×1
mypy ×1
oracle ×1
oracle-cloud-infrastructure ×1
pybind11 ×1
shell ×1
type-hinting ×1