我有以下df,其中包含来自不同来源的每日文章:
print(df)
Date content
2018-11-01 Apple Inc. AAPL 1.54% reported its fourth cons...
2018-11-01 U.S. stocks climbed Thursday, Apple is a real ...
2018-11-02 GONE are the days when smartphone manufacturer...
2018-11-03 To historians of technology, the story of the ...
2018-11-03 Apple Inc. AAPL 1.54% reported its fourth cons...
2018-11-03 Apple is turning to traditional broadcasting t...
(...)
我想计算“苹果”一词的每日提及总数-因此按日期汇总。如何创建“ final_df”?
print(final_df)
2018-11-01 2
2018-11-02 0
2018-11-03 2
(...)
答案 0 :(得分:3)
将count
用于新的Series
,并按列df['Date']
与sum
进行汇总:
df1 = df['content'].str.count('Apple').groupby(df['Date']).sum().reset_index(name='count')
print (df1)
Date count
0 2018-11-01 2
1 2018-11-02 0
2 2018-11-03 2
答案 1 :(得分:1)
您可以GroupBy
个不同的日期,使用str.count
对Apple
的出现进行计数,并与sum
进行累加以获得每个组中的计数数量:< / p>
df.groupby('Date').apply(lambda x: x.content.str.count('Apple').sum())
.reset_index(name='counts')
Date counts
0 2018-11-01 2
1 2018-11-02 0
2 2018-11-03 2
答案 2 :(得分:0)
您可以尝试使用具有groupby
功能的str.contains替代解决方案,而无需始终使用sum
。
>>> df
Date content
0 2018-11-01 Apple Inc. AAPL 1.54% reported its fourth cons
1 2018-11-01 U.S. stocks climbed Thursday, Apple is a real
2 2018-11-02 GONE are the days when smartphone manufacturer
3 2018-11-03 To historians of technology, the story of the
4 2018-11-03 Apple Inc. AAPL 1.54% reported its fourth cons
5 2018-11-03 Apple is turning to traditional broadcasting t
解决方案:
df.content.str.contains("Apple").groupby(df['Date']).count().reset_index(name="count")
Date count
0 2018-11-01 2
1 2018-11-02 1
2 2018-11-03 3
# df["content"].str.contains('Apple',case=True,na=False).groupby(df['Date']).count()