此列:
x['bags']
具有此:
bags
1
34
12
13
3
12
-
11
1
我想将其转换为int
,因为它是一种对象类型。
我想像这样在groupby
中使用它:
x.groupby(['user'])['bags'].sum()
并给出:
TypeError : +不支持的操作数类型:“ int”和“ str”
因此将其转换为int即可解决此问题。试过这个:
x['bags'].astype(str).astype(int)
但破折号有问题。
ValueError:以10为底的int()的无效文字:'-'
答案 0 :(得分:0)
将to_numeric
与errros=coerce
一起用于将非数字转换为NaN
s,并将另一个值转换为float
s(因为NaN
为float
设计),然后将sum
与列x['user']
聚合:
x = pd.DataFrame({'bags': ['1', '34', '12', '13', '3', '12', '-', '11', '1'],
'user': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b']})
print (x)
bags user
0 1 a
1 34 a
2 12 a
3 13 a
4 3 b
5 12 b
6 - b
7 11 b
8 1 b
df = pd.to_numeric(x['bags'], errors='coerce').groupby(x['user']).sum().reset_index()
print (df)
user bags
0 a 60.0
1 b 27.0
详细信息:
print (pd.to_numeric(x['bags'], errors='coerce'))
0 1.0
1 34.0
2 12.0
3 13.0
4 3.0
5 12.0
6 NaN
7 11.0
8 1.0
Name: bags, dtype: float64