Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 朱莉娅:用数组中的字符串替换数字_Python_Arrays_Replace_Julia - Fatal编程技术网

Python 朱莉娅:用数组中的字符串替换数字

Python 朱莉娅:用数组中的字符串替换数字,python,arrays,replace,julia,Python,Arrays,Replace,Julia,我有一个数字(整数或浮点)值数组(它实际上是DataFrame对象中的一列),并希望替换,例如,0到“NaN”或某些文本的所有实例。(或转换为1-->“M”和2-->“F”。) 我遇到了这样一个问题:当我写数组[I]=“text”时,我得到了错误: `convert` has no method matching convert(::Type{Int64}, ::ASCIIString) 我该怎么做?另外,做Pandas的df.column.replace({1:“M”,2:“F”},inpl

我有一个数字(整数或浮点)值数组(它实际上是DataFrame对象中的一列),并希望替换,例如,0到“NaN”或某些文本的所有实例。(或转换为1-->“M”和2-->“F”。)

我遇到了这样一个问题:当我写
数组[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] ]
。。。但是,当我只替换一些值时,这就遇到了一个问题(因为我传递的是一个不在dict中的[:sex]值,所以我得到了“key X not found”错误)。

这里是一个开始:

df[:sex] = convert(DataArray{Union(Int64, ASCIIString), 1}, df[:sex])

df[df[:sex] .== 1, :sex] = "M"
df[df[:sex] .== 2, :sex] = "F"

也许你最好有一个:

PooledDataArray{T}
:一种
DataArray{T}
的变体,用于表示包含大量重复的少量唯一值的数组,这在处理分类数据时经常发生

…它相当于pandas/R中的一个范畴



注意:这是因为引用数组包含从1到标签大小(2)的值。

我不知道是否有更多的朱利安方式来替换列,但是您可以使用
get
方法,即
get(replace_dict,I,I)
,以与使用
replace_dict.get相同的方式避免丢失键错误(i,i)
在Python中。我认为您不能执行简单的替换操作,因为
DataFrame
中的列的内容必须是相同的类型。我认为您需要创建一个类型为
Union(Number,String)的全新列
或键入
Any
,如果要在同一列中混合数字和字符串。如果该列已经是
Any
类型,那么如果blah==0;blah=“NaN”;end(在该列的循环内),则
有什么问题?
julia> df = DataFrame([1 3; 2 4; 1 6])
3x2 DataFrames.DataFrame
| Row | x1 | x2 |
|-----|----|----|
| 1   | 1  | 3  |
| 2   | 2  | 4  |
| 3   | 1  | 6  |

julia> PooledDataArray(DataArrays.RefArray(df[:x1]), [:Male, :Female])
3-element DataArrays.PooledDataArray{Symbol,Int64,1}:
 :Male
 :Female
 :Male

julia> df[:x1] = PooledDataArray(DataArrays.RefArray(df[:x1]), [:Male, :Female])
3-element DataArrays.PooledDataArray{Symbol,Int64,1}:
 :Male
 :Female
 :Male

julia> df
3x2 DataFrames.DataFrame
| Row | x1     | x2 |
|-----|--------|----|
| 1   | Male   | 3  |
| 2   | Female | 4  |
| 3   | Male   | 6  |