python - 使用 if 子句和 diff() 应用/Lambda
问题描述
要解决的问题是对序列数据在行之间和行内进行计算,并过滤与前一行值匹配的一列中的值。
这是我的数据: 按日期排列的累积数据列
日期。cumulativePositiveTests.cumulativeNegativeTests stateName
7 2020-03-15 1.0 143.0 Alaska
8 2020-03-16。1.0 143.0 阿拉斯加
9. 2020-03-17 3.0 334.0 阿拉斯加
10 2020-03-18 6.0 406.0 阿拉斯加
11 2020-03-19 6.0 432.0 阿拉斯加
当我只处理一个状态时,这有效:
COVID_df['Dly_PosTests'] = COVID_df['cumulativePositiveTests'].diff()
COVID_df['Dly_NegTests'] = COVID_df['cumulativeNegativeTests'].diff()
COVID_df['Dly_Tests'] = COVID_df['Dly_PosTests'] + COVID_df['Dly_NegTests']
COVID_df['Dly_Pos_Rate'] = (100* (COVID_df['Dly_PosTests'] / COVID_df['Dly_Tests']))
现在我有不止一个状态,我正在考虑一个带有 diff() 的 apply/lambda,但我无法获得正确的语法。
试过这个:
for i in range(7,(len(Chart_Data)-1):
Chart_Data.apply(lambda x:(x['cumulativePositiveTests'].diff()),axis=1)
if Chart_Data['stateName'].shift() == Chart_Data['stateName'] else None)
谢谢,
艾莉森
解决方案
想我明白了,但想知道其他东西是否会表现得更好?
def CovidCalc(gr):
Chart_Data['Dly_PosTests'] = Chart_Data['cumulativePositiveTests'].diff()
Chart_Data['Dly_NegTests'] = Chart_Data['cumulativeNegativeTests'].diff()
Chart_Data['Dly_Tests'] = Chart_Data['Dly_PosTests'] + Chart_Data['Dly_NegTests']
Chart_Data['Dly_Pos_Rate'] = (100* (Chart_Data['Dly_PosTests'] / Chart_Data['Dly_Tests']))
return None
然后
covid_range=(len(Chart_Data)-1)
然后
for i in range(7,covid_range):
Chart_Data.groupby("stateName").apply(CovidCalc)
推荐阅读
- testing - VUE CLI 3 - 使用 Mocha + webpack 测试单文件组件
- amazon-cloudformation - 无法访问无服务器 yml 中的跨堆栈引用的 restApiId 和 restApiRootResourceId
- python - google-calendar-api 的 service.events().list 的最早数据是哪个日期?
- c# - 在实体模型中使用 XMl 数据类型执行存储过程
- python - python解释器(由conda)在创建虚拟环境的pycharm项目中的含义是什么
- ios - 我们如何使用 AVSampleBufferDisplayLayer 来渲染 CMSampleBufferRef?
- gcc - 宏 SINIX 代表什么?
- configuration - 用于生产的 Farelogix 跟踪工具配置
- php - 使用 PHP 导出 Weasyprint
- java - error: no suitable method found for showInputDialog(
,String,int, ,String[],String)