将名称列表列拆分为首字母缩写的所有组合



我有一个带有"名字"列的数据框,例如约翰理查德。 我想查找名称+首字母的所有4种组合,并将其存储在单独的列中。所以在这种情况下,我想返回[(J R,John R,J Richard,John Richard(]。我知道我可以编写一个 for 循环并循环列表的每个元素,但是有没有更快/更有效的方法?

谢谢!

是的,python 具有高效的itertools实现:

import pandas as pd
from itertools import product
df = pd.DataFrame([['John Richard'],['John Fitz Kennedy']],columns=['name'])
def cart_prod(lst):
for i in range(len(lst)): lst[i] = [lst[i],lst[i][0]]
return [" ".join(i) for i in product(*lst)]
df['new_names'] = df.name.str.split().apply(cart_prod)
df

最新更新