首页 > 解决方案 > 通过 Python 中定义的函数清理 DataFrame 中的凌乱字符串

问题描述

我有一个数据框:

AATest=pd.DataFrame({'IDNUM': ['1234\t','234', 'Spreedsheet ', '2345\t', '1257 ']})
AATest

我想将数据集清理为以下结果:

AATest=pd.DataFrame({'IDNUM': ['1234', '2345', '1257']})
AATest

所以我写了一个函数,但结果并没有像我预期的那样工作,有人可以帮忙解决吗?非常感谢~

    IDNUM
0   1234\t
2   Spreedsheet
3   2345\t
4   1257

def removedeb(data):
    if (data['IDNUM'].str.len()<4).any():
        data.drop(data[data['IDNUM'].str.len()<4].index, inplace=True)
    elif (data['IDNUM'].str.len()>4).any():
        data=data['IDNUM'].str.strip('\t').str.strip().to_frame()
    elif (data['IDNUM'].str.contains('Spreedsheet')).any():
        data.drop(data[data['IDNUM'].str.contains('Spreedsheet')].index, inplace=True)
    else: return data

removedeb(AATest)

标签: pythonfunctiondataframe

解决方案


看看这是否适合你:

a = {'IDNUM': ['1234\t','234', 'Spreedsheet ', '2345\t', '1257 ']}

for key, value in a.items():
    temp = []
    for i in value:
        try:
            if len(i.strip()) != len(i):
                temp.append(str(int(i.strip())))
        except ValueError:
            continue
    a[key] = temp

print(a)

这个的输出是:{'IDNUM': ['1234', '2345', '1257']}


推荐阅读