【问题标题】:df[df>0] has different output in R and Python [duplicate]df[df>0] 在 R 和 Python 中有不同的输出 [重复]
【发布时间】:2020-10-16 19:17:51
【问题描述】:

我使用 R,但我没有遇到过必须对整个数据帧应用单个比较运算符的情况。在比较 Pandas DataFrame 和 R 数据帧时,我可以看到 df[df > 0] 在 Python 和 R 中的结果不同。

在 Python 中,df[df > 0] 的结果是另一个 DataFrame,而在 R 中,结果是一个向量。

Python 代码:

from numpy.random import randn
np.random.seed(101)
df = pd.DataFrame(randn(5,5), ['A', 'B', 'C', 'D', 'E'], ['V', 'W', 'X' , 'Y', 'Z'])

df[df > 0]

        V           W           X           Y           Z
A   2.706849839 0.628132709 0.907969446 0.503825754 0.651117948
B   NaN         NaN         0.605965349 NaN         0.740122057
C   0.528813494 NaN         0.188695309 NaN         NaN
D   0.955056509 0.190794322 1.978757324 2.60596728  0.683508886
E   0.302665449 1.693722925 NaN         NaN         NaN

R 代码:

> set.seed(101)
> df = data.frame(matrix(rnorm(25), 5, 5))
> df
          X1         X2         X3         X4         X5
1 -0.3260365  1.1739663  0.5264481 -0.1933380 -0.1637557
2  0.5524619  0.6187899 -0.7948444 -0.8497547  0.7085221
3 -0.6749438 -0.1127343  1.4277555  0.0584655 -0.2679805
4  0.2143595  0.9170283 -1.4668197 -0.8176704 -1.4639218
5  0.3107692 -0.2232594 -0.2366834 -2.0503078  0.7444358
> df[df > 0]
 [1] 0.5524619 0.2143595 0.3107692 1.1739663 0.6187899 0.9170283 0.5264481 1.4277555 0.0584655 0.7085221 0.7444358
> 

有人可以告诉我 R 和 Python 输出结果的方式有什么意义吗? 此外,在 R 中,是否有一种方法可以获取数据帧作为命令 df[df > 0]

的结果

【问题讨论】:

  • 非常奇怪的问题。 R 或 python 中的 df[df>0] 到底需要什么?在 R 中,它返回一个向量,因为这些是 data.frame 中 > 0 的元素

标签: r pandas dataframe


【解决方案1】:

我不清楚“重要性”部分,但如果您想要与 R 中的 Python 相同的输出,您可以将小于等于 0 的数字分配为 NaN

set.seed(101)
df = data.frame(matrix(rnorm(25), 5, 5))
df[df <= 0] <- NaN
df

#         X1        X2        X3        X4        X5
#1       NaN 1.1739663 0.5264481       NaN       NaN
#2 0.5524619 0.6187899       NaN       NaN 0.7085221
#3       NaN       NaN 1.4277555 0.0584655       NaN
#4 0.2143595 0.9170283       NaN       NaN       NaN
#5 0.3107692       NaN       NaN       NaN 0.7444358

【讨论】:

  • 重要的是,我只是想了解为什么 R 输出向量而不是数据帧。
  • 为什么你认为它应该返回一个数据框?因为 Python 做到了?对我来说,返回一个向量似乎比将值隐式转换为 NaN 更自然(可能是因为我经常使用 R)。对于 R,大部分“为什么”在 ?Extract 中得到了回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 2020-06-20
  • 2022-07-11
  • 2020-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多