我有一个数据帧,它是所有的对象-我认为应该是好的。 请注意,第一列的值类似于“10180”。你知道吗
问题解决了:发生了一些奇怪的事情。我的任务负责人解决了这个问题。我们只是把它读成直接的excel,而不是转换成csv(我是用libreoffice来做的)。问题解决了。 一个很大的暗示是所有这些“应该”起作用的东西都不起作用。你知道吗
这些都应该是“10180”-没有小数点。(请注意,在Jupyter中它显示正确。只有当我输出为csv时才应该作为小数点。但是朱庇特知道这是一个物体。)
另一个问题可能是看起来像“2361.9”的数据值。这些应该是浮子。 我想我可以做一个类似的事情,去掉逗号,然后转换。你知道吗
样本数据:
CBSA Code,CBSA Title,violent,murder,rape,robbery,assault,property,burglary,larceny,vehicle theft
10180.0,"Abilene, TX",393.2,5.3,64.0,65.7,258.2,"2,361.9",534.0,"1,670.0",157.8
10420.0,"Akron, OH",361.6,6.4,48.7,73.0,233.6,"2,226.0",415.6,"1,659.4",150.9
10500.0,"Albany, GA",728.5,11.6,30.6,95.1,591.3,"3,734.5",773.4,"2,715.1",246.0
10580.0,"Albany-Schenectady-Troy, NY",283.7,2.2,38.3,62.4,180.8,"1,892.3",226.9,"1,584.8",80.6
第一列应该是整数。我试过了
df[‘CBSA Code’].apply(np.int64) AND
df[‘CBSA Code’].astype(int) AND
df[‘CBSA Code’].astype(str).astype(int) AND
df[‘CBSA Code’] = df[‘CBSA Code’].astype(str)
df[‘CBSA Code’] = df[‘CBSA Code’].replace(“.0”, ’’)
df[‘CBSA Code’] = df[‘CBSA Code’].astype(‘int’)
我在其他问题中也看到了一些答案。但这对我没用。这一定是一个常见的难题。有没有一个规范的方法可以做到这一点?你知道吗
带有df['CBSA Code']的错误消息。应用(np.int64型)跟随
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-189-6c1c6381a02c> in <module>
----> 1 df['CBSA Code'].apply(np.int64)
~\AppData\Roaming\Python\Python37\site-packages\pandas\core\series.py in apply(self, func, convert_dtype, args, **kwds)
3589 else:
3590 values = self.astype(object).values
-> 3591 mapped = lib.map_infer(values, f, convert=convert_dtype)
3592
3593 if len(mapped) and isinstance(mapped[0], Series):
pandas\_libs\lib.pyx in pandas._libs.lib.map_infer()
ValueError: invalid literal for int() with base 10: '10180.0'
如果问题是
CBSA Code
列是一个格式化为字符串的float(从错误消息:ValueError: invalid literal for int() with base 10: '10180.0'
中可以看出),则不能直接转换为int,但可以先转换为float,然后转换为int:我怀疑
CBSA Code
有一些非数字值,所以read\u csv默认为dtypeobject
。您可以尝试使用可为空的整数数据类型Int64
(注意:它是大写的'I'
)相关问题 更多 >
编程相关推荐