vt2*_*253 4 python string pandas
我有一个从sql表中选择的数据帧,看起来像这样
id shares_float
0 1 621.76M
1 2 329.51M
Run Code Online (Sandbox Code Playgroud)
换句话说,
[(1, '621.76M'), (2, '329.51M')]
Run Code Online (Sandbox Code Playgroud)
我想拆分shares_float,如果它是'B',则乘以1,000,000,000,如果它是'M',则乘以1,000,000,如果它既不是或者没有尾随字符,只需转换并分配数字.
结果应该是浮动类型
ticker_id shares_float float_value
0 1 621.76M 621760000.00
1 2 3.51B 3510000000.00
Run Code Online (Sandbox Code Playgroud)
我是熊猫新手.有没有办法在熊猫中做到这一点?或者我应该将数据转换为列表并在循环中进行操作然后将其转换回pandas DataFrame?
注意补充:答案很有效!谢谢.顺便说一下,这个功能如何运作?
可以使用转换字典,我也相信你并不是说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
Run Code Online (Sandbox Code Playgroud)