python - 两列中基于年度的值比例
问题描述
我有很多个月的数据,每个月有很多点,我需要计算特定年份中column1中的0与column2中的1出现的次数,除以该年份中column1中出现0的次数。简单的例子:
temp = pd.DataFrame({'month':pd.date_range(start='2017-01-01', end='2019-01-01')})
temp['col1'] = np.random.randint(3, size=len(temp))
temp['col2'] = np.random.randint(3, size=len(temp))
我得到的最大值是 column1 和 column2 中不同的值对在不同年份一起出现的次数:
temp2 = temp.groupby(pd.Grouper(key='month', freq='A')).apply(lambda x: x.groupby('col1')['col2'].value_counts())
解决方案
我认为你想这样做:
temp['year'] = temp.month.apply(lambda x : x.year)
temp['condition'] = temp.apply(lambda row : ((row['col1'] == 0) and (row['col2'] == 1))*1,
axis=1)
output = temp.groupby('year').apply(lambda df : \
(df.condition.sum())/(df.col1.apply(lambda x: (x==0)*1).sum()))
推荐阅读
- c - 为什么 strsep() 不适用于指向堆栈的指针?
- python-3.x - StaleElementReferenceException 仅在 ActionChains / Python3、Selenium 中发生
- javascript - 如何在 Firebase 的 ref().set() 上修复“Object(...) 不是函数”?
- google-cloud-platform - 在 GCP 中创建新的 Cloud Composer 环境时出现 400 HTTP 错误
- ios - 如何在 iOS 中为不断闪烁的灯光设置动画?
- apache - JMeter - 避免线程突然关闭
- ideavim - 有没有办法在ideavim中查看vim消息?(/显示 VIM 工具窗口)
- angular - 我可以使用父路由器插座来显示子->子路由吗?
- postgresql - psql 服务器 ssh 隧道身份验证失败
- python - 计算其他类值的最小值后如何获取类方法的值