Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.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 检查一个大文件.csv并替换,然后将其分类到一列中_Python_Pandas_Dictionary_Data Mining - Fatal编程技术网

Python 检查一个大文件.csv并替换,然后将其分类到一列中

Python 检查一个大文件.csv并替换,然后将其分类到一列中,python,pandas,dictionary,data-mining,Python,Pandas,Dictionary,Data Mining,我需要检查一个大文件.csv并替换,然后将其分类到一列dataframe['value'] 这是我的代码,但它运行缓慢: def encoder(): classes={} a=dataframe['value'] c=-1 for i in a: if i not in classes: print(i) c=c+1 classes[i]=c for i in ran

我需要检查一个大文件.csv并替换,然后将其分类到一列
dataframe['value']

这是我的代码,但它运行缓慢:

def encoder():
    classes={}
    a=dataframe['value']
    c=-1
    for i in a:
        if i not in classes:
            print(i)
            c=c+1
            classes[i]=c
    for i in range(len(a)):
        print(i)
        dataframe['value'][i]=classes[a[i]]
有更好的解决办法吗

这是我的数据集的一部分:

subject_id  hadm_id seq_num icd9_code   icustay_id  value   valueuom
18557   183341  4   42731   228376.0    Tracheostomy    0
18557   178725  4   42731   228376.0    Tracheostomy    0
18557   173656  5   42731   228376.0    Tracheostomy    0
18557   138883  10  42731   228376.0    Tracheostomy    0
18557   183341  4   42731   228376.0    30  0
18557   178725  4   42731   228376.0    30  0
18557   173656  5   42731   228376.0    30  0
18557   138883  10  42731   228376.0    30  0
18557   183341  4   42731   228376.0    2 Person Assist 0
18557   178725  4   42731   228376.0    2 Person Assist 0
18557   173656  5   42731   228376.0    2 Person Assist 0
18557   138883  10  42731   228376.0    2 Person Assist 0
18557   183341  4   42731   228376.0    Calm    0
18557   178725  4   42731   228376.0    Calm    0
18557   173656  5   42731   228376.0    Calm    0
18557   138883  10  42731   228376.0    Calm    0
18557   183341  4   42731   228376.0    Present 0
18557   178725  4   42731   228376.0    Present 0
18557   173656  5   42731   228376.0    Present 0
18557   138883  10  42731   228376.0    Present 0

我对你的代码做了一些假设,如果我错了,请告诉我

  • 任务是对数据帧中列的值进行编码

  • 我假设value列没有任何空值,只有数字

  • 根据您的代码,我还假设您不允许使用诸如sklearn之类的库或任何用于此目的的库

  • 在这些假设下,下面的代码可能会对您有所帮助

    x = sorted(dataframe["value"].unique())
    y = list(range(0, len(x)))
    
    encoded_dict = dict(zip(x, y))
    dataframe["value"] = dataframe["value"].apply(lambda x: encoded_dict[x])
    

    你所说的分类是什么意思?如果要提取列中所有不同的值,请使用df['column']。从您的操作外观中删除_duplicates(),您只需为类创建字典并应用映射即可。另外,如果您只想为整个列设置一个值,那么只需执行df['value']=0可以为数据,特别是值列添加更多详细信息吗?它是否也包含空值,还是仅为0?此列是否有跳过的值或没有连续的值?这就是你想重新分类的原因吗?还有,我建议你通过。它将帮助你写出清晰、清晰的问题和必要的细节。是的,任务是对列值中的值进行编码。2.否,列由不同类型(str、int、float等)和空值组成。3.我尝试使用Ordinalencoder,但它会引发一个错误。在这种情况下,从sklearn获取标签编码器将为您提供帮助