在Pandas Csv中将字符串转换为Int列

时间:2019-12-16 08:56:57

标签: python pandas dataframe machine-learning type-conversion

晕,我是python新手

首先,我想问一下将字符串转换为数组的问题。我进行了6次数据培训和2次数据测试。

有一种方法叫做nilaiPrediksi()

nilaiPrediksi意味着将“甲型肝炎”转换为“ 1”,将“乙型肝炎”转换为“ -1”

在此之前,我已经制作了nilaiTarget()并成功。但是在文件中我只写了“ 1”和“ -1”,而不是“甲型肝炎”和“乙型肝炎” 这是我成功的代码,在我更改csv中的某些数据之前:

target = df.loc[:5, "Klasifikasi"]
targetPrediksi = target.sort_index(ascending = False)
targetPrediksi.index=range(len(targetPrediksi))

nilaiTarget = pd.concat([target, targetPrediksi], axis =1)
nilaiTarget
  

enter image description here

这是我的数据集 https://drive.google.com/open?id=1lRmd4oErkTPixiuvxdumSvtbmgCndS_x

df = pd.read_csv("datalatihnodummy.csv", sep=';')
target = df.loc[:5, "Klasifikasi"]
  

enter image description here

在我添加“甲型肝炎”和“乙型肝炎”之后,这是我的nilaiPrediksi()代码

def nilaiPrediksi():
    df = pd.read_csv("datalatihnodummy.csv", sep=';')
    target = df.loc[:5, "Klasifikasi"]
    targetPrediksi = target.sort_index(ascending = False)
    targetPrediksi.index=range(len(targetPrediksi))
    nilaiTarget = pd.concat([target, targetPrediksi], axis =1)
    for i in range(len(nilaiTarget.index)):
        targetPrediksi.loc[i, 'Hepatitis A '] = targetPrediksi.loc[i, 1]
        targetPrediksi.loc[i, 'Hepatitis A '] = targetPrediksi.loc[i, -1]
    return nilaiTarget 

结果是“索引器太多”

我写错了语法吗?无论如何寻求帮助^^

1 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

def nilaiPrediksi():
    df = pd.read_csv("datalatihnodummy.csv", sep=';')
    target = df.loc[:5, "Klasifikasi"]
    targetPrediksi = target.sort_index(ascending = False)
    targetPrediksi.index=range(len(targetPrediksi))
    nilaiTarget = pd.concat([target, targetPrediksi], axis =1)
    nilaiTarget['Klasifikasi'] = nilaiTarget['Klasifikasi'].replace({'Hepatitis A': 1, 'Hepatitis B': -1})
    return nilaiTarget

输出:

   Klasifikasi  Klasifikasi
0            1           -1
1            1           -1
2            1           -1
3           -1            1
4           -1            1
5           -1            1