用熊猫清理此数据

时间:2019-10-21 23:14:35

标签: python pandas

因此,我试图在excel文件中向下钻取一列数据,然后将其作为熊猫导入到Python中,以便管理更多项目。

This is a picture of some of the data I'm trying to clean

如您所见,说淋巴瘤的方法很多。我正在尝试将这些项目降低到基本情况,因此对于任何类型的淋巴瘤,仅是淋巴瘤。对于癌症,仅癌症,依此类推。

你们有什么建议吗?

1 个答案:

答案 0 :(得分:0)

最简单的方法是用关键字替换整个字符串:

df['Conditions'].str.replace('.*(Lymphoma|Cancer).*', '\\1', case=False)

但是这种解决方案相当不精确。如果某些类型的淋巴瘤实际上应被视为癌症,或者不包含关键字“淋巴瘤”的淋巴瘤病症,则无效。


一种更精确的方法是明确列出所有被认为是淋巴瘤和癌症的疾病,并相应地予以替代:

replacements = {
    'Lymphoma': ['Lymphoma', 'Follicular Lymphoma', 'Lymphoma, B-Cell', 'B-Cell Lymphoma', 'XYZ'],
    'Cancer': ['Cancer A', 'Cancer B']
}

# explode requires pandas 0.25 or later
s = pd.Series(replacements).explode()
m = pd.Series(s.index, index=s.str.upper()).to_dict()

df['Conditions'].str.upper().map(m)

upper个调用可以处理字符大小写。