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']