我在pandas中有一个数据帧,我正在从csv中读取它。
我的一个列的值包括NaN
、float
和科学记数法,即5.3e-23
我的问题是,当我读取csv时,pandas将这些数据视为对象数据类型
,而不是它应该是的float32
。我猜是因为它认为科学符号是字符串。
我尝试使用df['speed']转换数据类型。读取数据类型(float)
后,尝试使用df=pd指定正在读取的数据类型。read_csv('path/test.csv',dtype={'speed':np.float64},na_value=['n/a'])
。这会引发错误ValueError:无法安全地转换传递的用户数据类型
到目前为止,这两种方法都不起作用。我是否错过了一个非常容易修复的问题?
这个问题似乎暗示我可以指定可能引发错误的已知数字,但如果可能的话,我更愿意将科学符号转换回浮动。
编辑以显示注释中要求的CSV数据
7425616,12375,28,2015-08-09 11:07:56,0,-8.18644,118.21463,2,0,2
7425615,12375,28,2015-08-09 11:04:15,0,-8.18644,118.21463,2,NaN,2
7425617,12375,28,2015-08-09 11:09:38,0,-8.18644,118.2145,2,0.14,2
7425592,12375,28,2015-08-09 10:36:34,0,-8.18663,118.2157,2,0.05,2
65999,1021,29,2015-01-30 21:43:26,0,-8.36728,118.29235,1,0.206836151554794,2
204958,1160,30,2015-02-03 17:53:37,2,-8.36247,118.28664,1,9.49242000872744e-05,7
384739,,32,2015-01-14 16:07:02,1,-8.36778,118.29206,2,Infinity,4
275929,1160,30,2015-02-17 03:13:51,1,-8.36248,118.28656,1,113.318511172611,5
在我的例子中,使用pandas.round()工作。
df['column'] = df['column'].round(2)
我意识到是infinity
语句导致了我数据中的问题。使用“查找并替换”按钮删除此项已奏效。
@安东·普罗托波夫的回答也适用于@DSM关于我没有键入df['speed']=df['speed']的评论。aType(浮点)
。
谢谢你的帮助。
很难说没有看到您的数据,但行中似乎存在一个问题,即它们包含除数字和“n/a”值以外的其他内容。您可以加载数据帧,然后将其转换为数字,如该问题的答案所示。如果你有熊猫版
df1 = df.apply(pd.to_numeric, args=('coerce',))
然后,您可以使用dropna
删除带有NA值的行,或者使用fillna
我在pandas中有一个数据框,其中一些数字用科学符号(或指数符号)表示,如下所示: 科学记数法使得本应简单的比较变得不必要的困难。我认为是21900值搞砸了其他值。我的意思是1.0是编码的。一! 这不起作用: 而也没有实现抑制,我绝望地看着,而似乎只对所有其他浮点值打开它,没有能力关闭它。
如何修改大熊猫中产生非常大数字的科学符号的组比操作输出的格式? 我知道如何在python中进行字符串格式设置,但在这里应用它时,我不知所措。 如果我转换成字符串,这会抑制科学记数法,但现在我想知道如何设置字符串格式和添加小数。
问题内容: 我在熊猫中有一个DataFrame,其中一些数字用科学计数法(或指数计数法)表示,如下所示: 科学的表示法使应该进行轻松的比较成为不必要的困难。我认为正是21900的价值将其推向了其他水平。我的意思是1.0被编码。一! 这不起作用: 而且也没有实现抑制,而且我已经绝望了,只能为所有其他float值打开它,而无法关闭它。 问题答案: 您的数据可能是dtype。这是数据的直接复制/粘贴。将
问题内容: 我有一系列的格式,需要更改每个条目的日期。我想到了许多简单的解决方案,但是没有一个对我有用。目前,唯一有效的方法是 将系列设置为索引 从索引中查询月份和年份 使用年,月和1重建新的时间序列 真的不是那么复杂,是吗?有一个月开始,但是不幸的是,这没有用。该方法似乎没有任何功能,而当系列是一列而不是索引本身(的一部分)时,功能甚至更少。 问题答案: 您可以使用和,例如: 给出:
问题内容: 我正在尝试在我的matpllotlib Contourf图上自定义颜色条。虽然我能够使用科学记数法,但我尝试更改记数法的基础- 本质上是使我的价格变动范围在(-100,100)而不是(-10,10)内。 例如,这产生了一个简单的情节… 像这样: 但是,我希望颜色栏上方的标签为1e-2,数字范围为-10至10。 我将如何处理? 问题答案: 一种可能的解决方案是按以下问题子类化并固定其数量
问题内容: Pandas确实很棒,但令我惊讶的是,从Pandas.DataFrame检索值的效率低下。在下面的玩具示例中,即使DataFrame.iloc方法也比字典慢100倍以上。 问题:这里的教训仅仅是字典是查找价值的更好方法吗?是的,我知道那正是他们的目的。但是我只是想知道是否缺少有关DataFrame查找性能的信息。 我意识到这个问题比“提问”更“有趣”,但是我会接受一个提供洞察力或观点的