python - 创建一个 pandas DataFrame 列,其内容是一个集合

标签 python pandas set

我遇到了 pandas 问题。

这是我的数据框:

user    page_number   page_parts_of_speech
Anne    1             [('Hi', NP), ('my', PP), ('name', NN), ('is', VB), ('Anne', NP)]
John    2             [('Hi', NP), ('my', PP), ('name', NN), ('is', VB), ('John', NP)]

我想添加一个名为 set_of_parts_of_speech 的新列,其中包含一个集合,其中包含 parts_of_speech 列中与 NP 组合在一起的所有单词。

示例输出如下:

    user    page_number   page_parts_of_speech    set_of_parts_of_speech                           
    Anne    1             [('Hi', NP), ('my', PP),  ['Hi', 'Anne']
    ('name', NN), ('is', VB), ('Anne', NP)]
    John    2             [('Hi', NP), ('my', PP),  ['Hi', 'John']
    ('name', NN), ('is', VB), ('John', NP)]

set_of_parts_of_speech 列包含一个实际的集合非常重要。

对此问题的任何帮助将不胜感激。

最佳答案

使用 apply 与列表理解来按条件过滤:

print (type(df.loc[0, 'page_parts_of_speech']))
<class 'list'>

f = lambda x: set([y[0] for y in x if y[1] == 'NP'])
df['set_of_parts_of_speec'] = df['page_parts_of_speech'].apply(f)
print (df)
   user  page_number                               page_parts_of_speech  \
0  Anne            1  [(Hi, NP), (my, PP), (name, NN), (is, VB), (An...   
1  John            2  [(Hi, NP), (my, PP), (name, NN), (is, VB), (Jo...   

  set_of_parts_of_speec  
0            {Hi, Anne}  
1            {Hi, John}  

关于python - 创建一个 pandas DataFrame 列,其内容是一个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57358091/

相关文章:

Python - 我想按 10 年间隔进行分组并将其合并回来

javascript - 使用开发者 API 获取 Soundcloud 'liked' 播放列表

java - Java中如何查找多个ArrayList中的唯一元素

python - 如何检查字符串是否为十进制/ float ?

python - 导入错误: No module named data_utils

python - 无法打印在管道中选择的 sfs 功能

python - 设置与可迭代列表的差异

python - opencv-python:不是一个numpy数组

python - Pandas 数据框中的高效特征缩减

python - 将整个字符串转换为虚拟变量