python - 如何组合具有相似列名的数据列 Pandas
问题描述
我有一个具有许多相似列名(基本上是拼写错误的单词)的数据,例如:
apple grapes apples bana apyles grayes graph banana
在这里,我想合并列“apple, apples, apyles”,然后是“grapes, grayes, graph”和“bana,banana”。我怎样才能做到这一点?
*编辑评论:
问:当您说“结合”时,您是什么意思。你能包括样本输入和输出吗?
答。
输入
apple grapes apples bana apyles grayes graph banana
1 2 3 4 5 6 7 8
输出
apple grape banana
9 15 12
解决方案
fuzzywuzzy
您可以尝试以下方法。请注意,fuzz.ratio
我可以用来让它工作的最佳选择是70
:
import pandas as pd
from fuzzywuzzy import fuzz
l = []
correct = ['apple', 'grapes', 'banana']
cols = df.columns[df.columns.isin(correct)]
for col in cols:
l.append([c for c in df.columns if fuzz.ratio(col,c) > 70])
df = df.T.reset_index()
for i in range(len(correct)):
for j in l[i]:
df['index'] = df['index'].replace(j, correct[i])
df = df.groupby('index').sum().T
df
Out[1]:
index apple banana grapes
0 9 12 15
推荐阅读
- postman - 跨迭代重用数据
- java - 使用用户名和密码生成访问令牌
- java - 如何防止使用 guice-persist 和 @Transactional 重用 EntityManager?
- python - 我有一个时间序列的体积图。想要将另一列数据框强加为虚线
- search - 使用自定义数据表搜索过滤器时如何检索过滤后的数据表项(作为数组)
- sql-server - Dump an MS SQL database as an SQL script like My SQL does
- anaconda - 如何在不降级 Python 且不从源代码构建枕头的情况下从 conda 安装枕头
- python - python:object.__dict__没有显示所有属性
- c++ - 具有本机消息传递和非持久连接的 Microsoft Edge 扩展不起作用
- excel - 突出显示列中的单元格,与它们正上方的单元格相同