None
在Python的Pandas中,是否有任何方法可以替换值?
您可以使用df.replace('pre','post')
另一个值并将其替换,但是如果要替换为None
值,则无法完成此操作,如果尝试使用该值,则会得到奇怪的结果。
所以这是一个例子:
df = DataFrame(['-',3,2,5,1,-5,-1,'-',9])
df.replace('-', 0)
返回成功的结果。
但,
df.replace('-', None)
返回以下结果:
0
0 - // this isn't replaced
1 3
2 2
3 5
4 1
5 -5
6 -1
7 -1 // this is changed to `-1`...
8 9
为什么会返回如此奇怪的结果?
由于我想将此数据框倒入MySQL数据库,因此我不能将NaN
值放入数据框的任何元素中,而是要放置None
。当然,您可以先更改'-'
为NaN
,然后再转换NaN
为None
,但是我想知道为什么数据框以这种可怕的方式起作用。
已在Python 2.7和OS X 10.8的pandas 0.12.0开发人员上进行了测试。Python是OS X上的预装版本,我通过使用SciPy
Superpack脚本安装了熊猫,以供参考。
实际上,在更高版本的熊猫中,这将产生TypeError:
df.replace('-', None)
TypeError: If "to_replace" and "value" are both None then regex must be a mapping
您可以通过传递列表或字典来实现:
In [11]: df.replace('-', df.replace(['-'], [None]) # or .replace('-', {0: None})
Out[11]:
0
0 None
1 3
2 2
3 5
4 1
5 -5
6 -1
7 None
8 9
但我建议使用NaN而不是使用None:
In [12]: df.replace('-', np.nan)
Out[12]:
0
0 NaN
1 3
2 2
3 5
4 1
5 -5
6 -1
7 NaN
8 9
问题内容: 假设我有一个带有 的DataFrame : 我需要做的是用上方的同一列中NaN的第一个非NaN值替换每个值。假设第一行永远不会包含NaN。因此,对于前面的示例,结果将是 我可以遍历整个DataFrame的逐列,逐元素并直接设置值,但是是否有一种简单的方法(最佳无循环方法)来实现这一点? 问题答案: 你可以在上使用该方法,并将该方法指定为ffill(正向填充): 这个方法 将上一个有效观
问题内容: 我在MySQL中的运算结果中得到了价值。 有没有办法将这些值转换为值0? 问题答案: 是的,使用。 COALESCE遍历您提供的值列表,并返回第一个非空值。
你好,我经常需要在代码中使用,但我知道这是一个非常繁重的操作。由于我正在努力提高性能,我想知道删除所有调用的方法是否有效。 我使用的是,但是由于这种方法对于大型数据集可能会有很大的问题,所以我想使用这个解决方案: 我所做的不是创建类型对(Int,Int)的RDD,而是创建类型对(Int,list[Int]),所以我的如下所示 你认为有没有更快的方法来达到同样的结果,使用一些其他的方法?谢谢你。
也许可以在某个配置文件中完成。有人已经做过了吗?
问题内容: 我有一个这样的Pandas DataFrame: 我只想在值等于0的情况下用第二列()中的值替换值,然后(对于剩余的零值),再次使用第三列()进行替换。期望的结果是下一个: 我使用该函数完成了此操作,但它似乎太慢了。我认为这一定是一种更快的方法。 使用其他功能而不是该功能,有没有更快的方法呢? 问题答案: 使用起来更快。使用与您使用类似的模式: 但是,使用嵌套稍微快一点: 时机 使用以
问题内容: 所以我似乎无法弄清楚…我有一句话要说,我希望它成为。我已经尝试了以下所有方法,但似乎都没有效果; 我真的不明白为什么最后一个有效,因为这样可以正常工作: 我在这里想念什么吗? 编辑 我知道\是转义字符。我要在这里执行的操作是将所有内容都 转换为其他内容, 并且替换似乎没有按照我的预期进行。 我希望字符串a看起来像字符串b。但是替换并不能像我想的那样替换斜线。 问题答案: 无需为此使用r