首页 > 解决方案 > 如何从 pandas 列执行搜索和匹配以创建新列?

问题描述

我有一个 pandas 数据框,其中有一个字符串列 A。我想匹配下面列表中的特定关键字并创建一个新列。

[Android、iOS、Windows、Linux、MacOS]。

如果上述列表中没有匹配项,则新列值为“其他”。

列_A 新列
安卓10 安卓
iPhoneiOS 13.5.1 iOS
三星Android 9 安卓
视窗 10 视窗
iPhoneiOS 13.7 iOS
iOS 14.2 iOS
iOS 13.6 iOS
iOS 13.6.1 iOS
iOS 14.1 iOS
iOS 13.4.1 iOS
iOS 14.0.1 iOS
HTC安卓8.1.0 安卓
安卓 8.0.0 安卓
iOS 14.0 iOS
铬操作系统 其他
Windows 7的 视窗
Mac OS X 10.15.4 苹果系统

标签: pythonpandasdataframe

解决方案


您可以尝试以下代码:

创建虚拟数据框和要匹配的单词列表:

terms = ['Android', 'iOS','Windows']
x = pd.DataFrame({'Col1':['iPhoneiOS 13.5.1','Android10','SamsungAndroid 9','Windows 10','iPhoneiOS 13.7','iOS 14.2','Test','',np.nan]})

查找字符串的辅助函数:

def find_str(x):
  for i in terms:
    if i.lower() in x.lower():
        return i
    else:
        return 'Others'

x['Match'] = x['Col1'].astype(str).apply(lambda x: 'Others' if x is None else find_str(x))
print(x)

推荐阅读