在我转向excel宏的可怕世界之前,你是我最后的希望堡垒,
我有一个来自excel的庞大数据框架,我正在操纵,Pandas已被证明对编辑非常有用,因为excel非常挣扎.
我的最后一期如下:
现在,我有一个列,列出超过100k行的用户兴趣.问题是数据从未经过验证,所以我有潜在的有用信息,我需要操作10个输出之一.
我发现使用str.replace和str.contains是非常有用的,我想我会构建一些dicts或列表来迭代来处理逻辑.
当我在列表中使用str.contains时,它会替换整个字符串,我需要在分隔符之后保留信息以进行替换(因为用户可以有多个兴趣).
所以我可以
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
解决方法:
我不知道你是想通过修改它来清理文件,还是想要在运行时有选择地过滤兴趣,但是我会这样做:
>首先,我将得到所有兴趣的排序(和唯一)列表:将所有这些列表复制到一个文件中,每行一个,并运行一些排序-u FILE>在Bash或其他地方输出.
>然后我会重新组合兴趣(Racing和Race => Race)
>使用这些组,我将在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']
当然,您需要迭代这些行并将它们解析为一系列兴趣,但我不会过多介绍细节.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。