我有一个这样的熊猫数据框:
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 :(得分:2)
我将分两步执行此操作,首先,将fillna
与0
,然后除法:
t = df.fillna(0)
s = t.SALES - t.COST
df.assign(PE=t.PRICE.div(s).where(s.ne(0)))
ID PRICE SALES COST PE
0 1 10 10.0 5.0 2.0
1 2 10 5.0 3.0 5.0
2 3 10 5.0 NaN 2.0
3 4 10 NaN NaN NaN
4 5 10 4.0 2.0 5.0
答案 1 :(得分:0)
未经测试,但另一种方式可能是:
df['gross'] = df['SALES'].fillna(0) - df['COST'].fillna(0)
然后
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']