【问题标题】:split float numbers in half with python用python将浮点数分成两半
【发布时间】:2015-02-11 00:33:18
【问题描述】:

我正在处理使用 Adob​​e acrobat pro 从 pdf 转换而来的 csv 表。出于某种原因,该软件每 117 行创建一个经常性错误。它“复制并连接数字”,例如一行

7307 1 87.1

变成了这样的东西:

73077307 11 87187.1

我怎样才能用python“纠正”这些行?我需要在中间拆分浮动并擦除前半部分。

我已经阅读了几个关于截断的主题,但其中大多数需要按小数点拆分浮点数或只处理整数。数据类型将是 float64,因为我正在使用 pandas read_csv 函数来读取 csv。

df = pd.read_csv('path/file.csv',sep=';',index_col='Rang', na_values=['NA'])
df.dropna(how="all", inplace=True) # drop empty rows (an additional issue)
df[(df.index >10000)]

EDIT1:添加了代码,我认为我可以识别错误的代码,因为我一年中每小时有 1 行。任何索引大于 365*24=8760 的行都是错误的。但我现在看到这还不够。可以循环数据帧,如果行 (i+1)-行 (i) 的索引大于 1,则需要更正。但我是 python 的初学者。我不知道怎么写,但这是一个不同的问题。

我正在使用 python 版本 2.7.8 pandas v. 0.14.1

非常感谢!

【问题讨论】:

  • 你必须把它当作一个字符串。
  • edit您的问题包括您目前为此使用的代码。感谢您提高问题的参考价值!
  • 第一个也是最重要的问题 - 您如何区分此类数据与有效数字?
  • @ivan_pozdeev,可以确定是因为一年中的每小时生产,一年中的每个小时。索引是一个应该在 0 到 8760 之间的数字。对于“错误的”,情况不一定如此。
  • @merlin2011 我会尝试使用字符串方法,我会更新进度

标签: python split floating


【解决方案1】:

将每个以空格分隔的单词作为字符串抓取到列表中。对于该列表中的每个项目,检查单词的 len 是偶数还是奇数。如果是偶数,则将单词替换为单词的右半部分。如果奇数(因为右侧有 '.')抓住右半边向上取整(例如 9 个字符中的 5 个最右边的字符)。替换每个单词时添加到float64的转换。

【讨论】:

    猜你喜欢
    • 2010-09-07
    • 2014-09-29
    • 2016-03-27
    • 2013-05-25
    • 2013-12-06
    • 2012-05-26
    • 2021-04-23
    • 2020-09-21
    • 1970-01-01
    相关资源
    最近更新 更多