我有以下数据帧:
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.where
与list comprehension
中的startswith
条件一起使用,如下所示:
df['ISIN']=np.where([i.startswith("_") for i in df['ISIN']],'cash',df['ISIN'])