我在使用rpy2包进行转换时遇到问题dataframe
将 R 中的内容保存到 Python 中。
import os
os.environ['R_HOME'] = '/Library/Frameworks/R.framework/Resources'
import rpy2.robjects as ro
from rpy2.robjects import pandas2ri
# define a trivial dataframe in R
ro.r('n = c(1,2)')
ro.r("b = c(NA,'def')")
ro.r("temp_df = data.frame(n,b)")
# the dataframe in R shows missing value in one cell as NA
temp_rdf = ro.r('temp_df')
print(temp_rdf)
n b
1 1 <NA>
2 2 def
# yet the transformed Python dataframe replace the missing value with a string
temp_pydf = pandas2ri.ri2py(temp_rdf)
print(temp_pydf)
n b
1 1.0 def
2 2.0 def
我做了一些搜索并找到了这篇文章Rpy2 pandas2ri.ri2py() 正在将 NA 值转换为整数 https://stackoverflow.com/questions/40666458/rpy2-pandas2ri-ri2py-is-converting-na-values-to-integers。它解释了原因,但没有提供解决方案。我想在 Python 中为 R 数据帧中的 NA 提供 Null 值。我怎么能这样做呢?
更新:http://rpy.sourceforge.net/rpy2/doc-2.2/html/rinterface.html http://rpy.sourceforge.net/rpy2/doc-2.2/html/rinterface.html
上面的链接可能对某些设置有有用的帮助。如果您找到“NA”(包括空格)并转到第二个命中。有一个看起来与您的 NA 问题有关。
原帖:
假设输出中显示的“def”作为字符串输入,您可以将其替换为您确信不是数据中的值的字符串,然后使用它来代替未输入的 NA 值:
此示例代码说明了这个概念。
x = "def"
type(x)
x = x.replace("def", "NA")
x
查看源代码有两行都显示“def”的问题,其中一行来自数据,另一行 NA 转换为 def:
- 将 'def' 转换为 R 中的其他内容
- 输入您的数据
- 现在“def”意味着 NA
- 直接使用它或将其转换为您可以忍受的东西
这是您经常遇到的问题吗?
如果是这样,请创建一个测试函数来检查数据中的“def”
如果发现用疯狂的东西替换,你知道数据不会有像:my_crazy_replacementValue
将“def”替换为您想要的 NA 替身
将 my_crazy_replacementValue 替换为“def”
在 Python 中,我认为 NA 最常见的值是 None。
不幸的是,您不能使用以下方法将值替换为 None:
string.replace()
似乎应该有一个更好的答案:一种将数据框中的指定值转换为 None 的“Pythonic”方式。当我有机会时,我必须查看 Pandas -> 数据框,然后我可能会重新登录并编辑这一段(或者也许其他人会比我先一步)。希望以上内容能在这段时间内对您有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)