Python 检查一个大文件.csv并替换,然后将其分类到一列中
我需要检查一个大文件.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
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
我对你的代码做了一些假设,如果我错了,请告诉我
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获取标签编码器将为您提供帮助