【发布时间】:2015-03-06 01:50:03
【问题描述】:
我有一个数字(整数或浮点数)值数组(它实际上是 DataFrame 对象中的一列),并且希望将所有 0 实例替换为“NaN”或某些文本。 (或转换 1-->"M" 和 2-->"F"。)
我遇到的问题是,当我写array[i] = "text" 时,我得到了错误:
`convert` has no method matching convert(::Type{Int64}, ::ASCIIString)
我该如何解决这个问题?另外,做相当于 Pandas 的df.column.replace({1:"M", 2:"F"}, inplace=True) 的最有效方法是什么?
我确实试过这个:
df[:sex] = [ {1 => "M", 2 => "F"}[i] for i in df[:sex] ]
...但是当我只替换一些值时会遇到问题(然后我得到“未找到键 X”错误,因为我从 [:sex] 传递一个不在我的字典中的值)。
【问题讨论】:
-
我不知道是否有更多的朱利安方法来替换列,但你可以使用
get方法——即get(replace_dict, i, i)——来避免在与在 Python 中使用replace_dict.get(i, i)的方式相同。 -
我不认为你可以做一个简单的替换操作,因为
DataFrame中的列的内容必须都是相同的类型。如果您想在同一列中混合数字和字符串,我认为您需要创建一个全新的类型为Union(Number, String)或类型Any的列。如果列已经是Any类型,那么if blah == 0; blah = "NaN"; end有什么问题(在列的循环内)?
标签: python arrays replace julia