将一列字符串转换为Pandas中的数字

时间:2013-11-04 22:07:51

标签: python pandas

如何将Units列数字化?

我有一个谷歌电子表格,我在日期列中读取转换得很好..但我没有太多运气让单位销售列转换为数字我包括所有使用请求获取的代码数据:

from StringIO import StringIO 
import requests
#act = requests.get('https://docs.google.com/spreadsheet/ccc?key=0Ak_wF7ZGeMmHdFZtQjI1a1hhUWR2UExCa2E4MFhiWWc&output=csv&gid=1')
dataact = act.content
actdf = pd.read_csv(StringIO(dataact),index_col=0,parse_dates=['date'])
actdf.rename(columns={'Unit Sales': 'Units'}, inplace=True) #incase the space in the name is messing me up

我试图让单位获得数字

的不同方法
actdf=actdf['Units'].convert_objects(convert_numeric=True)
#actdf=actdf['Units'].astype('float32')

然后我想重新采样,我得到奇怪的字符串连接,因为数字仍然是字符串

#actdfq=actdf.resample('Q',sum)
#actdfq.head()
actdf.head()
#actdf

所以df看起来像只有单位和日期索引

date
2013-09-01    3,533
2013-08-01    4,226
2013-07-01    4,281
Name: Units, Length: 161, dtype: object

2 个答案:

答案 0 :(得分:3)

您必须指定千位分隔符:

actdf = pd.read_csv(StringIO(dataact), index_col=0, parse_dates=['date'], thousands=',')

答案 1 :(得分:2)

This will work

In [13]: s
Out[13]: 
0    4,223
1    3,123
dtype: object

In [14]: s.str.replace(',','').convert_objects(convert_numeric=True)
Out[14]: 
0    4223
1    3123
dtype: int64