0

如何将单位列变为数字?

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

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
4

2 回答 2

3

您必须指定千位分隔符:

actdf = pd.read_csv(StringIO(dataact), index_col=0, parse_dates=['date'], thousands=',')
于 2013-11-04T22:34:50.227 回答
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
于 2013-11-04T23:01:36.820 回答