Python 计算每个日期的频率字

Python 计算每个日期的频率字,python,pandas,Python,Pandas,我想数一数每个日期有多少个句子包含特定的单词。 例如: Date Sentences 2020-10-22 Word1 bla bla bla Word2 2020-10-22 Bla bla bla bla 2020-10-22 Word3 bla bla 2020-10-22 Word1 bla bla bla 2020-10-23 Word3 bla 2020-10-23 Word1 bla bla ... 我要搜索的单词用Wordx标识(这只是一个例子,它们是像trump、

我想数一数每个日期有多少个句子包含特定的单词。 例如:

Date    Sentences
2020-10-22 Word1 bla bla bla Word2
2020-10-22 Bla bla bla bla
2020-10-22 Word3 bla bla 
2020-10-22 Word1 bla bla bla
2020-10-23 Word3 bla 
2020-10-23 Word1 bla bla 
...
我要搜索的单词用Wordx标识(这只是一个例子,它们是像trump、money和其他的单词),而bla bla bla bla只是其他文本(例如,will not win,…)。 每一个单词,单词1,单词3,…,我想知道在一个特定的日期,它在句子中被使用的次数。 我的方法是创建一个特定单词的列表,我想在我的句子中查找这些单词,并使用GroupByDate通过日期查看它们,总结每个单词在时间中使用的次数。 比如说:

Mylist=[‘word1’,’word3’]
df[‘Sentences’].str.contains(‘|’, Mylist).groupby([‘Date’]).sum()
Word1       Freq
2020-10-22  2
2020-10-23  1

Word3      Freq
2020-10-22 1
2020-10-23 1
我没有得到预期的输出,所以我认为我在代码中写了一些错误的东西,或者这可能是解决问题的错误方法

我想要这样的东西:

Mylist=[‘word1’,’word3’]
df[‘Sentences’].str.contains(‘|’, Mylist).groupby([‘Date’]).sum()
Word1       Freq
2020-10-22  2
2020-10-23  1

Word3      Freq
2020-10-22 1
2020-10-23 1

您所处的路径是正确的,只需稍作语法更正:

  • 为了在选择单个列后按
    Date
    分组,必须将
    Date
    作为索引
  • 将要查找的模式作为第一个参数,无论是字符序列还是正则表达式
  • ###示例数据,始终提供可调用的代码行
    ###或者一个干净的表,可以通过“读取”剪贴板进行分析`
    df=pd.DataFrame({
    ‘日期’:[‘10/22’、‘10/22’、‘10/22’、‘10/22’、‘10/23’、‘10/23’],
    “句子”:[
    “单词1 bla bla bla Word2”,
    "呜呜呜呜",,
    “Word3布拉布拉”,
    “单词1布拉布拉布拉布拉布拉布拉”,
    “Word3 bla”,
    “Word1布拉布拉”
    ]
    }).set_索引(“日期”)
    Mylist=['Word1','Word3']
    out={#听写理解
    ###实际解决方案
    word:df['sequences'].str.contains(word).groupby('Date').sum()
    我的列表中的单词
    }
    对于键,val in out.items():
    打印(键)
    打印(val,“\n”)
    
    输出

    Word1
    Date
    10/22    2
    10/23    1
    Name: Sentences, dtype: int64
    
    Word3
    Date
    10/22    1
    10/23    1
    Name: Sentences, dtype: int64
    
    请注意,此解决方案不会计算同一句子中一个单词的多次出现次数,如在
    中,“Word1应返回两个Word1计数”
    ,这将只返回
    True
    ,而
    groubpy
    调用将其视为一个

    如果要计算同一句话中的多次出现次数,可以使用:

    df['sequences'].str.findall(word).map(len).groupby('Date').sum()
    
    也许可以使用字典,将单词作为键,将结果数据框作为值?非常感谢您的帮助并回答RichieV。