我有以下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'
,似乎忽略了整个内容)
答案 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