将字符转换为数据框中的数值

tho*_*mac 1 python dataframe pandas

我有一个名为'XLK'的df:

       Market Cap   PE  
AAN     3.25B      23.6 
AAPL    819.30B    18.44    
ACFN    6.18M      2.1  
ACIW    2.63B      103.15   
Run Code Online (Sandbox Code Playgroud)

我只想要价值> 1亿的市值,所以预期产量是:

       Market Cap   PE  
AAN     3.25B      23.6 
AAPL    819.30B    18.44    
ACIW    2.63B      103.15   
Run Code Online (Sandbox Code Playgroud)

我已经尝试将字母转换为适当的0而没有成功:

XLK['Market Cap'].replace('M','000000')
XLK.drop[XLK_quote['Market Cap'] < '100M'].index
Run Code Online (Sandbox Code Playgroud)

piR*_*red 5

使用replaceregex=True和使用仿真科学记数法替换字符串.然后使用astype(float)pd.to_numeric.

df[df.Market_Cap.replace(dict(B='E9', M='E6'), regex=True).astype(float) >= 100E6]

     Market_Cap      PE
AAN       3.25B   23.60
AAPL    819.30B   18.44
ACIW      2.63B  103.15
Run Code Online (Sandbox Code Playgroud)

等价

dct = dict(B='E9', M='E6')
num = pd.to_numeric(df.Market_Cap.replace(dct, regex=True), 'coerce')
df[num >= 100E6]
Run Code Online (Sandbox Code Playgroud)