我想按“code”列对数据帧进行分组,但仅当“name”中的值明显不同时
d = {'code': ['ABC', 'ABC','DB','DB','CDP'], 'name': ['abcde','abc de', 'defs','wokj','lkj']}
df = pd.DataFrame(data=d)
print(df)
code name
0 ABC abcde
1 ABC abc de
2 DB defs
3 DB wokj
4 CDP lkj
那会是什么样子
df2 = df.groupby(['code']).agg(name = ('name', (' + '.join))).reset_index()
print(df2)
code name
0 ABC abcde + abc de
1 CDP lkj
2 DB defs + wokj
但ABC不应该是分组的,而是根据如下条件保持为单独的行值
from difflib import SequenceMatcher
def similar(a, b):
return SequenceMatcher(None, a, b).ratio()
print(similar('abcde', 'abc de'))
print(similar('defs', 'wokj'))
0.9090909090909091
0.0
我想要的最终结果是
code name
0 ABC abcde
1 ABC abc de
1 CDP lkj
2 DB defs + wokj
如何在groupby中设置条件
这可能不是一个很好的解决方案,但我希望这对你有用。有些作品可以做得更像Python
输入:
输出:
输入:
输出:
相关问题 更多 >
编程相关推荐