3

使用如下所示的 DataFrame,当 c1pos 等于 0 时,如何将 c1len 设置为 0?然后我想对 c2len/c2pos 做同样的事情。有没有一种简单的方法可以做到这一点,而无需创建一堆列来获得所需的答案?

             distance  c1pos  c1len  c2pos  c2len  daysago
 line_date                                                
 2013-06-22      7.00      9    0.0      9    6.4       27
 2013-05-18      8.50      6    4.6      7    4.9       62
 2012-12-31      8.32      5    4.6      5    2.1      200
 2012-12-01      8.00      7    7.1      6    8.6      230
 2012-11-03      7.00      7    0.0      7    2.7      258
 2012-10-15      7.00      7    0.0      8    5.2      277
 2012-09-22      8.32     10   10.1      8    4.1      300
 2012-09-15      9.00     10   12.5      9   12.1      307
 2012-08-18      7.00      8    0.0      8    9.2      335
 2012-08-02      9.00      5    3.5      5    2.2      351
 2012-07-14     12.00      3    4.5      3    3.5      370
 2012-06-16      8.32      7    3.7      7    5.1      398
4

1 回答 1

6

我认为您没有任何实际满足这些条件的东西,但这会起作用

当相关列的行(例如c2pos)为 0 时,这会创建一个布尔掩码;然后它将列设置c2len为 0 对于那些是 True

In [15]: df.loc[df.c2pos==0,'c2len'] = 0

In [16]: df.loc[df.c1pos==0,'c1len'] = 0

In [17]: df
Out[17]: 
            distance  c1pos  c1len  c2pos  c2len  daysago
2013-06-22      7.00      9    0.0      9    6.4       27
2013-05-18      8.50      6    4.6      7    4.9       62
2012-12-31      8.32      5    4.6      5    2.1      200
2012-12-01      8.00      7    7.1      6    8.6      230
2012-11-03      7.00      7    0.0      7    2.7      258
2012-10-15      7.00      7    0.0      8    5.2      277
2012-09-22      8.32     10   10.1      8    4.1      300
2012-09-15      9.00     10   12.5      9   12.1      307
2012-08-18      7.00      8    0.0      8    9.2      335
2012-08-02      9.00      5    3.5      5    2.2      351
2012-07-14     12.00      3    4.5      3    3.5      370
2012-06-16      8.32      7    3.7      7    5.1      398
于 2013-08-23T20:24:24.910 回答