在字符串AND浮点数的数据帧中,将浮点数转换为整数,然后转换为字符串

时间:2018-08-29 19:57:29

标签: python pandas dataframe

我有以下dtype object的数据框:

  col1 col2  col3
0  1.1  3.3  spam
1  2.2  foo  eggs
2  bar  4.4   5.5

我想将所有浮点数转换为整数,然后将所有内容转换为字符串,因此输出将为dtype string

  col1 col2  col3
0    1    3  spam
1    2  foo  eggs
2  bar    4     5

有什么可以让我将数据框强制转换为int但可以忽略错误的东西吗?还是以其他方式实现这一目标? (使用errors = 'ignore',似乎忽略了整个内容)

2 个答案:

答案 0 :(得分:2)

一种选择是强制转换为字符串,然后使用正则表达式删除小数点。

import pandas as pd

df = pd.DataFrame({'col1': [1.1, 2.2, 'bar'], 
                   'col2': [3.3, 'foo', 4.4], 
                   'col3': ['spam', 'eggs', 5.5]})

df = df.astype(str).replace(r'(\-?\d+)\.\d+', r'\1', regex=True)

# returns:
  col1 col2  col3
0    1    3  spam
1    2  foo  eggs
2  bar    4     5

答案 1 :(得分:2)

您可以使用以下辅助功能:

  • 尝试将对象中的内容转换为float-这样就可以翻译“ 2.5”和“ 2”(以及Python的float函数可以解释为{ {1}}的值),但“你好,你好吗?”不会...
  • 然后尝试将float转换为float
  • 然后返回其int

如果str转换失败-那么它将仅返回您的原始对象,因为从技术上讲,只有float对话才能失败,好像成功了,您总是可以float和{{ 1}}将始终有效(失败了一些奇怪的自定义类-故意导致它失败)。

例如:

int(some_float)

然后将其与str

一起使用