![](/img/trans.png)
[英]How to replace a value in a pandas dataframe with column name based on a condition?
[英]Replace specific values in pandas dataframe with the corresponding column name, based on a condition,
我的熊貓數據框有三個可能的條目:
可以像這樣創建一個示例:
pd.DataFrame({'column1':['yes','some_string',np.NaN],
'column2':[np.NaN,np.NaN,'yes']}, columns=['column1','column2'])
我想實現以下目標:
yes
我希望它被替換為列名column1
或column2
;some_string
我想把它放在括號里,附加and
和相應的列名: 'column1 and (some_string)'
我嘗試了條件df.apply但它沒有用,因為它應用於系列,我不知道如何施加條件(=='是')
我也嘗試過熊貓面具,但我不知道如何用不同的元素而不是靜態元素替換。
IIUC 嘗試添加方括號和 'and',然后mask
yes
並radd
列名:
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.