熊猫在条件中添加新列

时间:2018-10-26 20:02:11

标签: 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   10      5          2
4   10     
5   10      4    2     5

感谢您的任何建议!

2 个答案:

答案 0 :(得分:2)

我将分两步执行此操作,首先,将fillna0,然后除法:

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']
相关问题