python-根据正则表达式字典填充Pandas DataFrame列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-根据正则表达式字典填充Pandas DataFrame列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1530字,纯文字阅读大概需要3分钟。
内容图文
![python-根据正则表达式字典填充Pandas DataFrame列](/upload/InfoBanner/zyjiaocheng/694/7dd0f65568494910b86a78cb3ee85dd6.jpg)
我有一个如下数据框:
GE GO
1 AD Weiss
2 KI Ruby
3 OH Port
4 ER Rose
5 KI Rose
6 JJ Weiss
7 OH 7UP
8 AD 7UP
9 OP Coke
10 JJ Stout
并且我正在尝试根据GO列的值添加一列.我当时正在考虑使用字典,但是在我的真实情况下,我需要使用正则表达式来识别部分匹配项.例如:
Dic={'Weiss|\wuby|Sto\w+':'Beer', 'Port|Rose':'Wine','\dUP|Coke':'Soda'}
这会给
GE GO OUT
1 AD Weiss Beer
2 KI Ruby Beer
3 OH Port Wine
4 ER Rose Wine
5 KI Rose Wine
6 JJ Weiss Beer
7 OH 7UP Soda
8 AD 7UP Soda
9 OP Coke Soda
10 JJ Stout Beer
lambda函数在这里可以工作吗?我将如何使其成为正则表达式?提前致谢!
解决方法:
您可以这样操作:
In [253]: df['OUT'] = df[['GO']].replace({'GO':Dic}, regex=True)
In [254]: df
Out[254]:
GE GO OUT
1 AD Weiss Beer
2 KI Ruby Beer
3 OH Port Wine
4 ER Rose Wine
5 KI Rose Wine
6 JJ Weiss Beer
7 OH 7UP Soda
8 AD 7UP Soda
9 OP Coke Soda
10 JJ Stout Beer
有趣的观察-在较早的Pandas版本中,与DataFrame.replace()和Series.str.replace()方法相比,Series.map()方法几乎总是更快.在Pandas 0.19.2中变得更好:
In [267]: df = pd.concat([df] * 10**4, ignore_index=True)
In [268]: %timeit df.GO.map(lambda x: next(Dic[k] for k in Dic if re.search(k, x)))
1 loop, best of 3: 1.57 s per loop
In [269]: %timeit df[['GO']].replace({'GO':Dic}, regex=True)
1 loop, best of 3: 895 ms per loop
In [270]: %timeit df.GO.replace(Dic, regex=True)
1 loop, best of 3: 876 ms per loop
In [271]: df.shape
Out[271]: (100000, 2)
内容总结
以上是互联网集市为您收集整理的python-根据正则表达式字典填充Pandas DataFrame列全部内容,希望文章能够帮你解决python-根据正则表达式字典填充Pandas DataFrame列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。