我从一个sql表中选择了一个数据帧,如下所示

   id shares_float
0   1      621.76M
1   2      329.51M

换句话说,
[(1, '621.76M'), (2, '329.51M')]

我想分割股票浮动,如果它是'B',乘以100000000,如果它是'M',乘以1000000,如果它不是或没有尾随字符,只需转换并分配数字。
结果应为浮点类型
   ticker_id  shares_float     float_value
0          1       621.76M    621760000.00
1          2         3.51B   3510000000.00

我对熊猫不熟悉。在熊猫身上有办法吗?或者,我应该将数据转换为列表并在循环中进行操作,然后将其转换回pandas数据帧?
添加注释:
答案很有效!谢谢您。顺便问一下,这个功能是如何工作的?

最佳答案

可以使用转换字典,我也确信你不是指624540000

In [9]:

D={'M':'*1e6', 'B':'*1e9'}
df['float_value']=df.shares_float.apply(lambda x: eval(x[:-1]+D[x[-1]]))
In [10]:

print df
   ticker_id shares_float  float_value
0          1      621.76M   621760000
1          2        3.51B  3510000000

[2 rows x 3 columns]
In [11]:

df.dtypes
Out[11]:
ticker_id         int64
shares_float     object
float_value     float64
dtype: object

10-04 21:43