[英]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.