【问题标题】:How can I overwrite a mapping of a column based on its current value and value of two other columns?如何根据列的当前值和其他两个列的值覆盖列的映射?
【发布时间】:2022-11-21 23:40:28
【问题描述】:

我有以下熊猫数据框

is_and_mp    market_state       reason     
  '100'          None             NaN  
  '400'          None             NaN 
  '100'          ALGO             NaN
  '400'          OPENING          NaN

我想写两个映射,如果 is_and_mp'100''400',以及 market_state == Nonereason == NaN,则映射 market_state =CONTINUOUS_TRADING

所以输出将是:

is_and_mp         market_state              reason     
  '100'        CONTINUOUS_TRADING             NaN  
  '400'        CONTINUOUS_TRADING             NaN
  '100'             ALGO                      NaN
  '400'           OPENING                     NaN

现有的映射不要改变很重要!谢谢

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    DataFrame.loc& 的链式掩码一起用于按位 AND

    df.loc[df.is_and_mp.isin([ '100', '400']) & df.market_state.isna() & df. reason.isna(),  'market_stat'] = 'CONTINUOUS_TRADING'
    

    或者如果值是数字:

    df.loc[df.is_and_mp.isin([ 100, 400]) & df.market_state.isna() & df. reason.isna(),  'market_stat'] = 'CONTINUOUS_TRADING' 
    

    【讨论】:

      猜你喜欢
      • 2020-07-12
      • 1970-01-01
      • 1970-01-01
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-26
      • 2021-01-09
      相关资源
      最近更新 更多