我在Python Pandas中有DataFrame,如下所示:
COL_1 | COL_2 | COL_3
------|---------------------|---------
111 | CV_COUNT_ABC_XM_BF | CV_SUM_ABC_XM_BF
222 | CV_COUNT_DEF_XM_BF | CV_SUM_CC_XM_BF
333 | CV_COUNT_CC_XM_BF | LACK
444 | LACK | CV_SUM_DEF_XM_BF
... | ... | ...
我需要修改上面的DataFrame,使COL_2和COL_3中的值为:
- 如果COL_2或COL_3中存在“LACK”,则将其保留
- 如果存在“LACK”以外其他值,则取值:
between "CV_COUNNT_" and "_XM_BF"
or
between "CV_SUM_" and "_XM_BF"
因此,作为一个结果,我需要像下面这样的东西:
COL_1 | COL_2 | COL_3
------|-------------------|---------
111 | ABC | ABC
222 | DEF | CC
333 | CC | LACK
444 | LACK | DEF
... | ... | ...
2条答案
按热度按时间nsc4cvqm1#
我们可以在这里使用
np.where
沿着str.extract
:ctehm74n2#
您可以使用
replace
:最短版本:
df.replace({'CV_(?:COUNT|SUM)_(\w+)_XM_BF': r'\1'}, regex=True)