猿问

按 Pandas 数据分组并保留值

我有一个看起来像这样的数据框


| | Sentence | Text  | Classes 

 0     1        a      Object

 1     1        a      Object

 2     1        a      Object

 3     1        a      Object

 4     1      school   Depart

 5     1        is     Verb

 6     1      closed   O

 .

 .

 .    60         a     Verb

我想按最常见的类类型对文本进行分组,所以它的结尾是这样的:


| | Sentence | Text  | Classes 

 0     1        a      Object

 1     1        is     Verb

 2     1      school   Depart

 3     1      closed   O

对数据进行分组时保持句子顺序非常重要,当我尝试使用以下代码时,它确实对数据进行了分组,但只删除了一次出现的条目:


def md(s):

c = Counter(s)

return c.most_common(1)[0][0]

df_final = df.groupby(['Sentence','Text']).Classes.agg(md)


蓝山帝景
浏览 168回答 1
1回答

catspeake

看来您的函数没有删除一次出现的条目(即该组的记录数)。如果你想保持句子中单词的顺序,你可以添加as_index=False, sort=Falseas 选项groupby,如果这就是你所说的“分组数据时保持句子顺序”的意思。import pandas as pdimport refrom collections import Counterdata = [['1', '1', '1', '1', '1', '1', '1'],        ['a', 'a', 'a', 'a', 'school', 'is', 'closed'],        ['Object', 'Object', 'Object', 'Object', 'Depart', 'Verb', 'O']]d = {'Sentence': data[0], 'Text': data[1], 'Classes': data[2]}df = pd.DataFrame(data=d)def md(s):    c = Counter(s)    return c.most_common(1)[0][0]df_final = df.groupby(['Sentence','Text'], as_index=False, sort=False).Classes.agg(md)print(df_final)输出:  Sentence    Text Classes0        1       a  Object1        1  school  Depart2        1      is    Verb3        1  closed       O
随时随地看视频慕课网APP

相关分类

Python
我要回答