簡體   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