如果值以特定字符开头,则替换数据帧列中的值



我有以下数据帧:

df = pd.DataFrame({'ISIN': ['_A1kT23', '4523', '_Currency', 'NI49O33'], 'Name': ['Example A', 'Name Xy', 'Example B', 'Test123'], 'Debt_Equity': [-65.56, 0.55, 0, 37], 'EV_Sales': [9.28, 0.53, 11.3, 45], 'Bestand': ['', '4523', 'B333', '']})

我想把ISIN的值改为";现金;如果它以"0"开头_"这样我就得到了新的数据帧:

df = pd.DataFrame({'ISIN': ['Cash', '4523', 'Cash', 'NI49O33'], 'Name': ['Example A', 'Name Xy', 'Example B', 'Test123'], 'Debt_Equity': [-65.56, 0.55, 0, 37], 'EV_Sales': [9.28, 0.53, 11.3, 45], 'Bestand': ['', '4523', 'B333', '']})

我通过编码来尝试

df['ISIN'] = df['ISIN'].replace({'_':'Cash'})

但这只适用于值恰好为"_"的情况,而不适用于以特定字符开头的情况。有人能帮忙吗?

尝试:

m=df['ISIN'].str.startswith('_')
#your condition

最后:

df.loc[m,'ISIN']='Cash'

通过numpy的where()方法

#import numpy as np
df['ISIN']=np.where(m,'Cash',df['ISIN'])

通过mask()方法:

df['ISIN']=df['ISIN'].mask(m,'Cash')

您可以将np.wherelist comprehension中的startswith条件一起使用,如下所示:

df['ISIN']=np.where([i.startswith("_") for i in df['ISIN']],'cash',df['ISIN'])

最新更新