0
一個數據幀專欄中,我有以下大熊貓據幀d1
:有條件改變基於其他列的值
+----------+-------+---------+--------------+
| Item Num | Cost | Revenue | Rev/Cost |
+----------+-------+---------+--------------+
| 1 | 45.76 | 345.67 | 7.5539772727 |
| 2 | 55.78 | 456.92 | 8.1914664754 |
| 3 | 34.68 | 0 | 0 |
| 4 | 79.85 | 0 | 0 |
+----------+-------+---------+--------------+
我想對於Cost/Rev
列的值等於Cost
該行,乘以負1,在情況下,「成本/ REV」等於0
因此所需的輸出將是:
+----------+-------+---------+--------------+
| Item Num | Cost | Revenue | Rev/Cost |
+----------+-------+---------+--------------+
| 1 | 45.76 | 345.67 | 7.5539772727 |
| 2 | 55.78 | 456.92 | 8.1914664754 |
| 3 | 34.68 | 0 | -34.68 |
| 4 | 79.85 | 0 | -79.85 |
+----------+-------+---------+--------------+
我至今是:
d1['Rev/Cost'] = d1['Rev/Cost'].apply(lambda x: x if x > 0 else d1['Cost'])
簡單地覆蓋預期範圍與單個值並引發以下警告:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead