Python 使用熊猫清理此数据

Python 使用熊猫清理此数据,python,pandas,Python,Pandas,因此,我正试图深入研究excel文件中的一列数据,并将其作为一个熊猫导入Python,以获得更易于管理的项 正如你所见,淋巴瘤有很多不同的说法。我正试图把这些项目归结到基本情况,所以对于任何类型的淋巴瘤,都是淋巴瘤。对于癌症,只是癌症,等等 你们有什么建议吗 最简单的方法是用关键字替换整个字符串: df['Conditions'].str.replace('.*(Lymphoma|Cancer).*', '\\1', case=False) 但这个解决方案相当不精确。如果有某些类型的淋巴瘤实

因此,我正试图深入研究excel文件中的一列数据,并将其作为一个熊猫导入Python,以获得更易于管理的项

正如你所见,淋巴瘤有很多不同的说法。我正试图把这些项目归结到基本情况,所以对于任何类型的淋巴瘤,都是淋巴瘤。对于癌症,只是癌症,等等


你们有什么建议吗

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

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
调用用于处理字符大小写。

如果您不关心拼写错误之类的问题,您可以检查成员资格并重新标记它们,例如
df.Conditions[df.Conditions.str.contains('Lymphoma')]=“Lymphoma”