我有一个来自excel的庞大数据框架,我正在操纵,Pandas已被证明对编辑很有用,因为excel真的很挣扎。
我的最后一期如下:
现在,我有一个列,列出超过100k行的用户兴趣。问题是数据从未被验证过,所以我有可能需要操作10个输出之一的有用信息。
我发现使用str.replace
和str.contains
非常有用,我想我会构建一些dicts或list来迭代来处理逻辑。
当我在str.contains
上使用list
时,它会替换整个string
,我需要在分隔符之后保留信息以进行替换(因为用户可以拥有多个兴趣)。
所以我可以
User, Interest
a Racing, Football, Soccer, Kickball, footy, Basketball, Hockey, Running, Jogging, Jogging & Running
b Racing, Jogging, Basketball, Computers, Reading.
c Ice Hockey
例如,有多个足球的例子需要放入一个类别,依此类推。
假设我们只是在运动之后,那么清理非运动数据的有效方法是什么呢?
我希望我的整个问题都有道理。
输出:
User, Interest
a Race, Ball Sport, Athletics
b Race, Ball Sport, Athletics
c Athletics
答案 0 :(得分:3)
我不知道你是想通过修改它来清理文件,还是想在运行时有选择地过滤兴趣,但是我会这样做:
sort -u FILE > OUTPUT
。通过这些组,我将在Python中创建一个带字典的映射:
mapping = {
'racing': 'Race',
'race': 'Race',
'football': 'Ball Sport',
...
}
最后,在阅读文件时,我会使用函数返回每行的验证兴趣:
def validate_interests(*interests):
validated = []
for interest in interests:
valid = mapping.get(interest.lower(), None)
if valid is not None:
validated.append(valid)
return validated
In [10]: validate_interests('Football', 'Racing')
Out[10]: ['Ball Sport', 'Race']
当然,您需要对这些行进行迭代并将其解析为一系列兴趣,但我不会过多介绍细节。