python-3.x - 在有条件的熊猫中除以前一行
问题描述
我正在尝试创建一个新列,它是前一行的划分。但有些行的值为 0。所以我的条件语句是:如果 2 行之间的除法是无穷大或 nan,则增长率列中的值为 0。否则,它将与前一行相除。
''' n=len(df) for j in range(0,n-1):
if ((df.iloc[j,4]/df.iloc[j-1,4]) == inf):
df['GrowthRate']=0
else:
df['GrowthRate'] = df.iloc[j,4]/df.iloc[j-1,4]
j=j+1
'''
输出是我在列中的所有值都是 inf。
解决方案
如果上面的值为 0 则除以np.inf
,得到 0,否则除以前一个值
col = df.iloc[:,4]
df['GrowthRate'] = col.div(col.where(col.eq(0), np.inf))
如果NaN
最后需要填写:
df['GrowthRate'] = col.div(col.where(col.eq(0), np.inf)).fillna(0)
推荐阅读
- python - 向烧瓶宁静的应用程序发出请求时出现问题
- c# - 使用 Windows 10 IoT Core 通过 I2C 向 PIC16F1503 发送命令
- python - How to fix in
Error for my neural network? - android - Problem passing information from activities
- java - How can I change this while loop to a for loop
- python - 提取要匹配的图像数据集的 SIFT 特征
- vba - PowerPoint VBA堆栈
- javascript - 根据宽度计算div的高度并保持比例
- javascript - 在JavaScript中获取距另一个最近的点
- javascript - 将组件视图附加到正文