繁体   English   中英

根据条件,用相应的列名替换 pandas 数据框中的特定值,

[英]Replace specific values in pandas dataframe with the corresponding column name, based on a condition,

我的熊猫数据框有三个可能的条目:

  • 1(整数)
  • NaN
  • 任意字符串

可以像这样创建一个示例:

pd.DataFrame({'column1':['yes','some_string',np.NaN],
              'column2':[np.NaN,np.NaN,'yes']}, columns=['column1','column2'])

我想实现以下目标:

  1. 只要元素值为yes我希望它被替换为列名column1column2
  2. 当元素为 NaN 时,它应该保持不变
  3. 如果有一个字符串some_string我想把它放在括号里,附加and和相应的列名: 'column1 and (some_string)'

我尝试了条件df.apply但它没有用,因为它应用于系列,我不知道如何施加条件(=='是')

我也尝试过熊猫面具,但我不知道如何用不同的元素而不是静态元素替换。

IIUC 尝试添加方括号和 'and',然后mask yesradd列名:

new_df = (' and (' + df + ')').mask(df.eq('yes'), '').radd(df.columns)

new_df

                     column1  column2
0                    column1      NaN
1  column1 and (some_string)      NaN
2                        NaN  column2

步骤分解:

new_df = ' and (' + df + ')'
              column1     column2
0           and (yes)         NaN
1   and (some_string)         NaN
2                 NaN   and (yes)

mask

new_df = new_df.mask(df.eq('yes'), '')
              column1 column2
0                         NaN
1   and (some_string)     NaN
2                 NaN        

radd

new_df = new_df.radd(df.columns)
                     column1  column2
0                    column1      NaN
1  column1 and (some_string)      NaN
2                        NaN  column2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM