python - 如何检查一个单词列表是否包含在熊猫数据框中的另一个列表中?
问题描述
我正在尝试比较数据框中不同列中的两个单词列表并打印常用单词。之后,我想计算一列common_count
,即常用词的数量除以第一个列表中的总词数。最终输出将如下所示:
用于创建数据框的片段:
raw_data = [{'id': 1, 'name': '[corporation, fluor]', 'name_ref': '[constructors, fluor, incorporated, intl]'},\
{'id': 2, 'name': '[community, foundation]', 'name_ref': '[community, county, foundation, of, the, westmoreland]'},\
{'id': 3, 'name': '[fo, minnesota, vikings]', 'name_ref': '[development, inc, minnesota, vikings]'}]
df = pd.DataFrame.from_dict(raw_data)
请建议我如何在 pandas 或 pyspark 方法中导出common
和common_count
列。
解决方案
这是使用 pandas 的方法:
def string_to_array(s):
return [x.strip() for x in s.strip("[]").split(",")]
df['name'] = df['name'].apply(string_to_array)
df['name_ref'] = df['name_ref'].apply(string_to_array)
df['common'] = [list(set(x[1]) & set(x[2])) for x in df.values]
df['common_count'] = df['common'].str.len() / df['name'].str.len()
print(df)
# id name name_ref common common_count
# 0 1 [corporation, fluor] [constructors, fluor, incorporated, intl] [fluor] 0.500000
# 1 2 [community, foundation] [community, county, foundation, of, the, westm... [community, foundation] 1.000000
# 2 3 [fo, minnesota, vikings] [development, inc, minnesota, vikings] [minnesota, vikings] 0.666667
推荐阅读
- pandas - 使用日期时间索引切片数据获取 emty 数据框
- android - 在 ViewPager 中暂停的片段不接收 LiveData 事件
- css - 为什么 Boostrap 4.4.1 媒体查询不起作用?
- python - 未找到添加到 virtualenv 'activate' 脚本的环境变量(mac)
- javascript - InfiniteCalendar 中 onSelect 的事件处理程序
- angularjs - 使用 AngularJS 在模态对话框中使用模板
- node.js - 在 linux 上运行 nfc-pcsc 示例不会触发任何事件
- colors - 如何更改拾轮器线条的颜色和粗细?(斯威夫特用户界面)
- android - 如何在没有 IV(初始化向量)的情况下使用 Cipher
- php - 如何在 php 的 preg_match_all() 中添加印地语字符搜索?