Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 添加带有条件的新列_Python_Pandas - Fatal编程技术网

Python 添加带有条件的新列

Python 添加带有条件的新列,python,pandas,Python,Pandas,我有这样一个熊猫数据框: ID PRICE SALES COST 1 10 10 5 2 10 5 3 3 10 5 4 10 5 10 4 2 预期产出: 我想添加一个新列,计算如下: 价格/(销售-成本) (销售-成本)为0时如何处理?我想把它留为空白 ID PRICE SALES COST P/E 1 10 10 5 2 2 10 5 3 5 3

我有这样一个熊猫数据框:

ID PRICE SALES COST
1   10     10   5
2   10      5   3
3   10      5
4   10     
5   10      4   2
预期产出: 我想添加一个新列,计算如下: 价格/(销售-成本) (销售-成本)为0时如何处理?我想把它留为空白

ID  PRICE  SALES COST  P/E
1   10     10    5     2
2   10      5    3     5
3   10      5          2
4   10     
5   10      4    2     5

谢谢你的建议

我将分两步进行,首先,用
0
填充na,然后除以:

t = df.fillna(0)
s = t.SALES - t.COST

df.assign(PE=t.PRICE.div(s).where(s.ne(0)))


未经测试,但另一种方法可能是:

df['gross'] = df['SALES'].fillna(0) - df['COST'].fillna(0)
然后

上述内容的一行版本可能是:

df.loc[(df['SALES'].fillna(0) - df['COST'].fillna(0)) != 0, 'P/E'] = df['Price'] / df['gross']
df.loc[df['gross'] != 0, 'P/E'] = df['Price'] / df['gross']
df.loc[(df['SALES'].fillna(0) - df['COST'].fillna(0)) != 0, 'P/E'] = df['Price'] / df['gross']