You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataFrame中按日期统计0/1值并计算情感值?

嘿,我来帮你搞定这个Pandas的统计与情感值计算需求!下面是一步步的实现方案,用你给的示例数据来演示:

1. 按日期统计new_sentiment列中1和0的数量

首先我们可以用Pandas的groupby结合value_counts来按日期分组统计,或者用pivot_table把结果整理成更直观的宽表格式,方便后续计算。

代码实现:

import pandas as pd
import numpy as np

# 构造你的示例数据
data = {
    'date': ['2017-04-28', '2017-04-28', '2017-04-28',
             '2017-04-27', '2017-04-27',
             '2017-04-26', '2017-04-26', '2017-04-26', '2017-04-26', '2017-04-26'],
    'new_sentiment': [1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0]
}
df = pd.DataFrame(data)

# 先把new_sentiment转为整数(可选,避免浮点数干扰)
df['new_sentiment'] = df['new_sentiment'].astype(int)

# 按日期分组,统计1和0的数量,整理成宽表
count_df = df.groupby('date')['new_sentiment'].value_counts().unstack(fill_value=0)
# 重命名列名更直观
count_df.columns = ['count_0', 'count_1']
print("按日期统计的1和0数量:")
print(count_df)

输出结果:

count_0  count_1
date                        
2017-04-26        2        3
2017-04-27        1        1
2017-04-28        0        3

2. 计算情感值sentiment_value = log10(count_of_1 / count_of_0)

这里要注意处理除数为0的情况(比如2017-04-28没有0的记录),可以用np.where或者replace避免除以0的错误,同时用np.log10计算对数。

代码实现:

# 计算count_1/count_0,处理除数为0的情况(这里用一个极小值代替0,避免报错)
ratio = count_df['count_1'] / count_df['count_0'].replace(0, 1e-9)
# 计算情感值,对count_0为0的情况设为NaN(也可根据需求自定义)
count_df['sentiment_value'] = np.where(count_df['count_0'] == 0, np.nan, np.log10(ratio))

print("\n计算后的情感值:")
print(count_df)

输出结果:

count_0  count_1  sentiment_value
date                                          
2017-04-26        2        3         0.176091
2017-04-27        1        1         0.000000
2017-04-28        0        3              NaN

如果不想出现NaN,也可以把除数为0的情况映射为np.inf(表示完全正向情感),只需要调整np.where的逻辑即可。

内容的提问来源于stack exchange,提问作者Muh Fadlizi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:48:11