gpt4 book ai didi

python - Pandas Dataframe 的 Bigram Finder

转载 作者:行者123 更新时间:2023-11-28 22:10:30 24 4
gpt4 key购买 nike

我有一个二元组列表。
我有一个 pandas 数据框,其中包含语料库中每个文档的一行。我想要做的是将每个文档中的列表中匹配的二元组放入数据框中的新列中。完成这项任务的最佳方法是什么?我一直在寻找有关堆栈溢出的答案,但没有找到能为我提供我正在寻找的具体答案的东西。我需要新列来包含从我的二元列表中找到的每个二元。

如有任何帮助,我们将不胜感激!

下面的输出就是我正在寻找的内容,尽管在我的真实示例中,我使用了停用词,因此找不到像下面的输出一样的精确二元组。有没有办法处理某种包含可能的字符串?

import pandas as pd 
data = [['help me with my python pandas please'], ['machine learning is fun using svd with sklearn']]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Message'])
import numpy as np
bigrams =[('python', 'pandas'),
('function', 'input'),
('help', 'jupyter'),
('sklearn', 'svd')]
def matcher(x):
for i in bigrams:
if i.lower() in x.lower():
return i
else:
return np.nan

df['Match'] = df['Message'].apply(matcher)
df

最佳答案

这就是我要做的:

# a sample, which you should've given
df = pd.DataFrame({'sentences': ['I like python pandas',
'find all function input from help jupyter',
'this has no bigrams']})


# the bigrams
bigrams = [('python', 'pandas'),
('function', 'input'),
('help', 'jupyter'),
('sklearn', 'svd')]

# create one big regex pattern:
pat = '|'.join(" ".join(x) for x in bigrams)

new_df = df.sentences.str.findall(pat)

给你

0                   [python pandas]
1 [function input, help jupyter]
2 []
Name: sentences, dtype: object

然后您可以选择unnest每行中的列表。

或者您可以使用get_dummies:

new_df.str.join(',').str.get_dummies(sep=',')

它给你:

  function input  help jupyter  python pandas
0 0 0 1
1 1 1 0
2 0 0 0

关于python - Pandas Dataframe 的 Bigram Finder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56603333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com