使用 for/if 循环熊猫计算字长

时间:2021-07-27 07:20:38

标签: python pandas dataframe

我有一个数据框,我需要根据 Word 列分别计算 Concept 列中每个 Note 的字长。

For each Concept in a df: 
  if Note contains ("tupi") -> count word length for these Words.    
  if not -> count word length for others

  print (Concept + " tupi " + word_length)
  print (Concept + " not tupi " + word_length)

输出应该是这样的:

ANTEATER tupi 5.034

ANTEATER not tupi 4.56
_______
WILD CAT tupi 4.55

WILD CAT not tupi 3.44

输入数据框示例:

<头>
语言 概念 借用 注意
第一次 食蚁兽 tamanduá 从tupi借来的
第二个 食蚁兽 uãiarú
第三 食蚁兽 atãn
第四 食蚁兽 aatãm 来自图皮的贷款
第五个 野猫 玉野
第六个 野猫 sdfsg
第七个 野猫 玉野 来自图皮的贷款
第八个 野猫 sdfsg 从tupi借来的

1 个答案:

答案 0 :(得分:2)

您可以完全在 Pandas 中执行此操作,而无需 for 循环。

  • 创建一个列 tupi,表示 Note 列是否包含“tupi”。
  • 使用 Word Length 列中的单词长度创建一个 Word 列。

现在,使用 groupby 并计算 Concept 列中带有和不带有 'tupi' 的每个 Note 的平均字长:

df['tupi'] = df['Note'].str.contains('tupi').fillna(False)
df['Word Length'] = df['Word'].str.len()
df.groupby(['Concept', 'tupi'])['Word Length'].mean()

来自给定数据的结果数据框:

Concept   tupi 
ANTEATER  False    5.0
          True     6.5
WILD CAT  False    5.5
          True     5.5