【问题标题】:Loop Through DataFrame to Select Specific Cells in Python循环遍历 DataFrame 以在 Python 中选择特定单元格
【发布时间】:2021-11-01 05:57:54
【问题描述】:

我正在尝试创建一个循环函数来循环遍历我在 python 中的数据帧,以便比较文本文档的计数矢量化方法和其他类似的比较函数。

我有电影系列的数据,想将每部续集的情节与系列中的原始电影以及系列中的前一部电影进行比较。我附上了数据的sn-p。例如,我希望将 FranID 1 中的 Seq 1 与 FranID 1 中的 Seq 0 进行比较,并为每个续集和特许经营权继续进行。我想要 Seq 2、3、4、5 等。与每个 FranID 中的 Seq 0 进行比较。

此外,我想要一个单独的循环,将每个续集与每个系列中的前一部电影进行比较。例如,我想将 Seq 1 与 Seq 0 和 Seq 2 与 Seq 1 进行比较,等等。

有没有一种方法可以循环遍历数据以将其实现到此代码或类似代码中,然后将其作为每部电影的新变量添加到数据框中:

def cosine_distance_countvectorizer_method(s1, s2):

# sentences to list
allsentences = [s1 , s2]

# packages
from sklearn.feature_extraction.text import CountVectorizer
from scipy.spatial import distance

# text to vector
vectorizer = CountVectorizer()
all_sentences_to_vector = vectorizer.fit_transform(allsentences)
text_to_vector_v1 = all_sentences_to_vector.toarray()[0].tolist()
text_to_vector_v2 = all_sentences_to_vector.toarray()[1].tolist()

# distance of similarity
cosine = distance.cosine(text_to_vector_v1, text_to_vector_v2)
print('Similarity of two sentences are equal to ',round((1-cosine)*100,2),'%')
return cosine

下一行:

cosine_distance_countvectorizer_method(ss1 , ss2)

数据示例:

【问题讨论】:

  • 永远不要在数据框中使用循环。试试 loc, iloc
  • 您要选择哪些单元格?不是很清楚
  • @trillion 我想将每个 FranID 的 Seq 1 的“情节”单元格的文本与 Seq 0 进行比较。例如,我想比较观察值 0 和 1。此外,我想比较 906 和 905 以及比较 905 和 904 等。
  • 好的,我可能已经让这变得更容易了,但我仍然对代码有困难。我进去为 plot_prev 和 plot_orig 创建新列。我想将“plot”列中的每个项目与“plot_prev”和“plot_orig”进行比较。如何在给定的代码中将每列中的每个单元格定义为 s1 和 s2 以遍历整个列?我添加了我现在拥有的数据框的新屏幕截图。
  • 嘿,您想比较 plot_prev 和 plot_org,如果 plot 等于 plot_prev 和 plot_org,那么 AND 条件是否意味着返回 true ?\

标签: python pandas loops text


【解决方案1】:

根据你在聊天中的讨论:


ss1 == df['plot']
ss2 == df['plot_prev']

to apply the function use args / kwargs
https://www.journaldev.com/33478/pandas-dataframe-apply-examples

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多