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



我有以下 dtypeobject的数据帧:

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

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

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

是否有某些东西允许我将数据帧转换为 int 但忽略错误? 还是以不同的方式实现这一点? (使用errors = 'ignore',似乎忽略了整件事(

您可以使用帮助程序函数,该函数:

  • 尝试将对象中的内容转换为float- 因此"2.5"和"2"将能够被翻译(以及 Python 的float函数可以解释为float值的任何内容(,但是"你好。你好吗?
  • 然后尝试将该float转换为int
  • 然后返回其str

如果float转换失败 - 那么它只会返回您的原始对象,因为从技术上讲,只有float对话可以失败,如果成功,您可以随时int(some_float)并且str将始终有效(失败一些奇怪的自定义类 - 故意导致它失败(。

例如:

def try_to_int(obj):
try:
return str(int(float(obj)))
except (ValueError, TypeError):
return obj

然后与new_df = df.applymap(try_to_int)一起使用

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

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

最新更新