【问题标题】:Tokenizing the text and count in a dataframe based on other column基于其他列在数据框中标记文本和计数
【发布时间】:2020-05-27 22:27:14
【问题描述】:

我需要对数据进行标记,但似乎真的很混乱。我有这样的数据:

TEXT               Author               Date
This is a Cat       Jane                 1.01.1997
This is a Dog       Sara                 1.02.2009
I have a cat        Lesner               5.07.2001

我需要这样的输出:

Date:
1.01.1997    This
1.01.1997    is
1.01.1997     a
1.01.1997    cat
.
.
.
.

有没有办法实现这样的输出?

【问题讨论】:

    标签: python pandas nltk


    【解决方案1】:

    使用Series.str.splitSeries.explode 在pandas 0.25+ 中工作Series

    s = df.set_index('Date')['TEXT'].str.split().explode()
    print (s)
    Date
    1.01.1997    This
    1.01.1997      is
    1.01.1997       a
    1.01.1997     Cat
    1.02.2009    This
    1.02.2009      is
    1.02.2009       a
    1.02.2009     Dog
    5.07.2001       I
    5.07.2001    have
    5.07.2001       a
    5.07.2001     cat
    Name: TEXT, dtype: object
    

    如果想要 2 列 DataFrame 添加 Series.reset_index:

    df = s.reset_index(name='text')
    print (df)
             Date  text
    0   1.01.1997  This
    1   1.01.1997    is
    2   1.01.1997     a
    3   1.01.1997   Cat
    4   1.02.2009  This
    5   1.02.2009    is
    6   1.02.2009     a
    7   1.02.2009   Dog
    8   5.07.2001     I
    9   5.07.2001  have
    10  5.07.2001     a
    11  5.07.2001   cat
    

    【讨论】:

    • 看起来:df.set_index('Date')['TEXT'].str.split().explode() 可能会更好地匹配输出......但目前尚不清楚 OP 是否希望从中获得 DF 或 Series 是否足够。
    • @jezrael 你能解释一下我们如何删除重复的.. 例如2011-03-17 [', Hinterher, ist, man, immer, schlauer:, Hät, man, ist']
    • @s_khan92 - 在我的解决方案之后添加df = df.drop_duplicates()
    • 其实我不想删除所有重复的项目...我只想根据日期删除。
    • @s_khan92 - 是的,它按日期删除,因为它按所有 2 列删除,因为未指定列名,它与 df = df.drop_duplicates(['Date','text']) 相同
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多