有条件地使用其他列更新Pandas DataFrame列

3

如下所示的DataFrame中,当c1pos等于零时,我该如何将c1len设置为零?然后我希望对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
1个回答

6
我不认为你有什么东西能够满足这些条件,但是这个方法可以解决问题。
这将创建一个布尔掩码,用于确定特定列(例如c2pos)的行是否为0;然后它将对那些为True的行将列c2len设置为0。
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

太好了,我没有意识到所提供的样本没有任何限定行。实际帧有数百行...谢谢!! - TravisVOX
gr8,详细文档[在这里](http://pandas.pydata.org/pandas-docs/dev/indexing.html) - Jeff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接