【问题标题】:Replace row in DataFrame dependant on a value根据值替换 DataFrame 中的行
【发布时间】:2013-10-17 09:52:05
【问题描述】:

我想替换数据中的一整行,前提是该行中的一列满足条件。 即红色是数据框

['1' 0.0 ' P']
['2' 0.0 ' S']
['3' 64  ' M']
['4' 70  ' M']



red=red.replace(to_replace=' M', value=0)

返回结果:

['1' 0.0 ' P']
['2' 0.0 ' S']
['3' 64  0]
['4' 70  0]

但我希望它返回:

['1' 0.0 ' P']
['2' 0.0 ' S']
['3' 0  0]
['4' 0  0]

【问题讨论】:

    标签: python replace pandas dataframe


    【解决方案1】:

    使用loc过滤掉DataFrame中你想归零的部分,然后给它赋值。下面,它选择c 列值为'M' 的所有行,并取从b 到c 的所有列,并将此选择的值设置为0:

    df = pd.DataFrame([['1', 0.0, 'P'],
        ...: ['2', 0.0, 'S'],
        ...: ['3', 64,  'M'],
        ...: ['4', 70,  'M'],], columns=['a', 'b', 'c'])
    
    df.loc[df['c']=='M','b':'c'] = 0
    
    df
    Out[54]: 
       a  b  c
    0  1  0  P
    1  2  0  S
    2  3  0  0
    3  4  0  0
    

    【讨论】:

    • 感谢您的回答,但如何选择范围内的值? df.loc[ df['c']>0 和 df['c']
    • 括号忘了,请看link here
    猜你喜欢
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 2020-06-22
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多