假设我有一个带有NaN
s 的DataFrame :
>>> import pandas as pd
>>> df = pd.DataFrame([[1, 2, 3], [4, None, None], [None, None, 9]])
>>> df
0 1 2
0 1 2 3
1 4 NaN NaN
2 NaN NaN 9
Run Code Online (Sandbox Code Playgroud)
我需要做的是用它上面的同一列中NaN
的第一个非NaN
值替换每个值.假设第一行永远不会包含a NaN
.因此,对于前面的示例,结果将是
0 1 2
0 1 2 3
1 4 2 3
2 4 2 9
Run Code Online (Sandbox Code Playgroud)
我可以逐个循环遍历整个DataFrame,逐个元素并直接设置值,但是有一种简单(最佳无循环)的方法来实现这一目标吗?
我在PyCharm 3.4.1专业版中有两个纯python项目.第一个,我们称之为p
(像包),结构为setuptools包(即使用setup.py,所有要求等,但它不会上传到pypi或任何其他在线存储库).第二个,我们称之为s
(如脚本),只是一个python脚本和两个模块.
Project s
(在PyCharm中)被配置为使用专用的virtualenv,让我们称之为venv
.
我遇到的问题如下:当我像这样安装项目(包)p
时venv
:
$ source /path/to/venv/bin/activate
(venv)$ cd /path/to/p
(venv)$ python3 setup.py develop
Run Code Online (Sandbox Code Playgroud)
在项目中的PyCharm中s
,import p
语句是错误的,消息没有名为p的模块.但是,当我运行脚本时s
,一切都很好,唯一的问题是PyCharm IDE抱怨无法找到模块.我可以忍受这个,但它很烦人......
为什么会这样?它是PyCharm的东西还是包装相关的东西?见下面的新闻.
项目/包p
具有以下结构:
p/
|
+- p/
| |
| +- __init__.py
| +- other subpackages, modules, etc.
+- setup.py
+- README, DESCRIPTION, setup.cfg, etc.
Run Code Online (Sandbox Code Playgroud)
当我将PyCharm项目配置为p
自己的virtualenv并在开发模式下安装时,一切正常.
新闻
PyCharm 5.0.4中仍然存在此问题.但是,我成功地解决了它.
出于某些原因,我不得不从pypi安装另一个包.我通过PyCharm进入文件 - >设置 - >项目: - >项目解释器,点击绿色+ …
我有一些元素的列表,例如[1, 2, 3, 4]
,单个对象,例如'a'
.我想生成一个元组列表,列表元素位于第一个位置,单个对象位于第二个位置:[(1, 'a'), (2, 'a'), (3, 'a'), (4, 'a')]
.
我可以这样做zip
:
def zip_with_scalar(l, o): # l - the list; o - the object
return list(zip(l, [o] * len(l)))
Run Code Online (Sandbox Code Playgroud)
然而,这给了我一种创造和不必要的重复元素列表的感觉.
另一种可能性是
def zip_with_scalar(l, o):
return [(i, o) for i in l]
Run Code Online (Sandbox Code Playgroud)
这确实非常干净和pythonic,但在这里我做"手动"整个事情.在Haskell中,我会做类似的事情
zipWithScalar l o = zip l $ repeat o
Run Code Online (Sandbox Code Playgroud)
是否有任何内置函数或技巧,无论是用于标量的压缩还是用于使我能够使用普通zip的东西,即排序无限列表?
我想从我的电脑通过USB控制RC模型.我不需要真正的无线电控制,因此通过电缆直接控制伺服系统是足够的(是的,模型和控制单元之间会有电缆).我想我会构建一些基于微控制器的设备,它将通过USB连接到计算机,并且伺服器将连接到该设备.
我要求提示我应该从哪里开始.我知道伺服系统是如何控制的,我最终应该如何编程微控制器以控制伺服系统,但我真正不太了解的是USB通信既不在设备端也不在计算机端(将是Linux).
我想在C中进行编程(可能是微控制器的汇编程序).
谢谢你的每一个提示.
在Dart中,是否可以拥有一个具有明确定义签名的函数列表?我正在寻找类似的东西
List<(int, int) -> int> listOfFunctions;
Run Code Online (Sandbox Code Playgroud)
这当然是错的.
我可以
List<Function> listOfFunctions;
Run Code Online (Sandbox Code Playgroud)
但后来我不知道签名.
谢谢你的任何提示.
因为这个事我已经头疼好久了……
\n\n我正在尝试在我的虚拟服务器(CentOS 7、apache http 服务器、php 5.4.3)上安装 MyBB 论坛,但遇到了文件权限问题。MyBB 需要两个文件可写,其中一个是config.php
,第二个是settings.php
,它们都在目录 中inc
。
我将两个文件的权限都设置为 666。我编写了一个简单的测试 php 页面,它模仿 MyBB 测试写入能力的方式:
\n\n<?php\necho(\'config: \');\n$configwritable = @fopen(\'forum/inc/config.php\', \'w\');\nif ($configwritable) {\n echo(\'yes\');\n} else {\n echo(\'no\');\n}\necho(\'<br/>\');\necho(\'settings: \');\n$configwritable = @fopen(\'forum/inc/settings.php\', \'w\');\nif ($configwritable) {\n echo(\'yes\');\n} else {\n echo(\'no\');\n}\n?>\n
Run Code Online (Sandbox Code Playgroud)\n\n页面输出为
\n\nconfig: no\nsettings: yes\n
Run Code Online (Sandbox Code Playgroud)\n\n但如果我列出文件,它们会像这样显示
\n\nroot@localhost# ls -l forum/inc/config.php forum/inc/settings.php \n-rw-rw-rw-. 1 krkavec krkavec 0 2.\xc2\xa0\xc5\x99\xc3\xadj 22.49 forum/inc/config.php\n-rw-rw-rw-. 1 krkavec krkavec 0 2.\xc2\xa0\xc5\x99\xc3\xadj 22.51 forum/inc/settings.php\n
Run Code Online (Sandbox Code Playgroud)\n\n这怎么可能?这两个文件属于同一用户,同一组,具有相同的大小(零),位于同一目录中,具有相同的权限,具有几乎相同的修改时间(相差两分钟)以及几乎所有其他内容,除了他们的名字是相同的。
\n\n为了让事情变得更奇怪,我尝试再次删除和创建文件,请观看:
\n\n …我有一个numpy向量(1-D数组)或标量列表(即只是数字).所有的载体都有相同的长度,但我不知道那是什么.我需要vstack
所有元素来创建一个矩阵(2-D数组),使得标量被视为在每个位置具有标量的向量.
示例是最佳描述:
情况1:
>>> np.vstack([np.array([1, 2, 3]), np.array([3, 2, 1])])
array([[1, 2, 3],
[3, 2, 1]])
Run Code Online (Sandbox Code Playgroud)
案例2:
>>> np.vstack([1, 2])
array([[1],
[2]])
Run Code Online (Sandbox Code Playgroud)
案例3:
>>> np.vstack([np.array([1, 2, 3]), 0, np.array([3, 2, 1])])
np.array([[1, 2, 3],
[0, 0, 0],
[3, 2, 1]])
Run Code Online (Sandbox Code Playgroud)
案例1和案例2开箱即用.但是,在情况3中,它并不像vstack需要所有元素都是相同长度的数组.
实现这一目标是否有一些不错的方式(最好是单线程)?
注意:
In [1]: import numpy as np
In [2]: x = np.array([1, 2, 3])
In [3]: np.vstack([x, x])
Out[3]:
array([[1, 2, 3],
[1, 2, 3]])
In [4]: np.vstack(np.broadcast(x, x))
Out[4]:
array([[1, 1],
[2, 2],
[3, 3]])
Run Code Online (Sandbox Code Playgroud)
类似地对于column_stack
和row_stack
(hstack
在这种情况下表现不同但在与广播一起使用时也有所不同).为什么?
我追求的是背后的逻辑,而不是找到一种"修复"这种行为的方式(我对它很好,它只是不直观).
我正在尝试编写一个 docker 镜像来通过 netcat 运行一个简单的网络服务器。
所以我在我的 docker build 文件夹中有:
Dockerfile
index.html
run_netcat_webserver.sh
Run Code Online (Sandbox Code Playgroud)
这run_netcat_webserver.sh
非常简单,而且工作正常:
Dockerfile
index.html
run_netcat_webserver.sh
Run Code Online (Sandbox Code Playgroud)
这是我的天真的 Dockerfile,当然它不起作用:
FROM ubuntu:14.04
CMD run_netcat_webserver.sh
Run Code Online (Sandbox Code Playgroud)
我应该如何继续在 docker 容器中进行这项工作?
是否有一种很好的pythonic方法可以将列表分组到列表列表中,其中每个内部列表只包含那些具有相同投影的元素,由用户定义为函数?
例:
>>> x = [0, 1, 2, 3, 4, 5, 6, 7]
>>> groupby(x, projection=lambda e: e % 3)
[[0, 3, 6], [1, 4, 7], [2, 5]]
Run Code Online (Sandbox Code Playgroud)
我不关心投影本身,只是如果它对某些元素是相等的,那么它们必须最终存在于同一个子列表中.
我基本上是在寻找与haskell函数相当的python GHC.Exts.groupWith
:
Prelude> import GHC.Exts
Prelude GHC.Exts> groupWith (`mod` 3) [0..7]
[[0,3,6],[1,4,7],[2,5]]
Run Code Online (Sandbox Code Playgroud)