pandas DataFrame之间的区别'其中'和Numpy'在哪里'

时间:2017-07-03 20:21:09

标签: python pandas numpy where-clause

我一直在试图用Pandas&过滤我的Python数据NumPy的。 ' where'之间似乎存在差异。 Pandas(pd)与Numpy(np)中的条款。 np和pd数据帧都有'其中'条款。 np'其中'有道理,但pd' where' (对我而言)。

#[In]#
np.random.seed(1000) ; rv = DataFrame(np.random.randn(1000,2))
rv[:10]
#[Out]#
#           0         1
# 0 -0.804458  0.320932
# 1 -0.025483  0.644324
# 2 -0.300797  0.389475
# 3 -0.107437 -0.479983
# 4  0.595036 -0.464668

但是,当尝试根据pd的值来分配rv2时,其中'我得到的条款:

rv2 = rv.where(rv>=0,1,-1)
type(rv2)
# NoneType
rv[:10]
#           0         1
# 0  1.000000  0.320932
# 1  1.000000  0.644324
# 2  1.000000  0.389475
# 3  1.000000  1.000000
# 4  0.595036  1.000000

所以rv2是NoneType,rv实际上已经改变了值。我甚至不清楚rv如何最终得到它的新值,因为它们不符合where子句,据我所知。

但是,如果我使用np where子句而不是数据帧'其中'事情按预期工作(除了我得到一个np数组而不是数据帧):

#[In]#
np.random.seed(1000) ; rv = DataFrame(np.random.randn(1000,2))
xy = np.where(rv>=0,1,-1)
xy[:5]
#[Out]#
# array([[-1,  1],
#        [-1,  1],
#        [-1,  1],
#        [-1, -1],
#        [ 1, -1],

文档http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.where.html#pandas.DataFrame.where指出' where'应该返回一个对象,而不是进行就地更改。但是,rv变量已就地更改。

有谁能告诉我两者之间有什么区别以及我应该如何使用pd数据框'其中'?

0 个答案:

没有答案