我有一个数据框,我需要根据 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借来的 |
答案 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