我遇到了 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/