如何在Python中将一个小数对象转换为整数?

sdnqo3pr  于 2023-02-11  发布在  Python
关注(0)|答案(5)|浏览(485)

ValueError:对于以10为基数的int(),文本无效:'100/100'
我的数据集有一个评级列,该列以对象的形式保存评级,表示为:98/100、99/100、60/100等
我需要将此列转换为int,例如:98、99、60等。
我试了.astypeint(float())

ih99xse1

ih99xse11#

考虑到:
1.你说的是Pandas Dataframe
1.每个等级的形式为X/100,如果不是,则可以在下面的lambda函数中进行基本计算。
可以使用apply方法,然后使用astype将列转换为整数值:

df = df['rating'].apply(lambda x: x.split('/')[0]).astype(int))
import pandas as pd
df = pd.DataFrame.from_dict({'rating': ['90/100', '88/100', '35/100']})
df['rating'] = df['rating'].apply(lambda x: x.split('/')[0]).astype(int)
print(df)

退货:

rating
0  90
1  88
2  35

如果等级的格式为X/Y,则采用更通用的计算:

df['rating'] = df['rating'].apply(lambda x: (int(x.split('/')[0]) / int(x.split('/')[1])) * 100).astype(int)

或者很快,但是extremely unsafe根本不是一个好的实践:

df['rating'] = df['rating'].apply(lambda x: eval(x) * 100).astype(int)

如果你只是在"摆弄" Python,你可以使用它:-)

3npbholx

3npbholx2#

'98/100'是表示分数的字符串。
@no_hex的答案显示了一种使用字符串操作解析分子的方法,但是Python也支持分数,所以使用分数可能更容易。

>> from fractions import Fraction
>> s = "98/100"
>> int(Fraction(s) * 100)
98

附带的好处是,如果分数分母不同,这也会给予正确的答案。

>> s = "3/4"
>> float(Fraction(s) * 100)
75.0
bbmckpt7

bbmckpt73#

s = '60/100'
int(s.split('/')[0])
aydmsdu9

aydmsdu94#

你必须把它四舍五入到最接近的整数值,然后你可以把它转换成整数,例如3/5将是0.6,但是如果你尝试转换,它不会工作,因为它是一个十进制值,但是如果你把它四舍五入,你可以把它转换成整数
也取决于你想做什么

6za6bjd0

6za6bjd05#

请尝试以下代码:

result = int(valueOfyoucolumn) * 100

这样,你就去掉了分数,并把结果转换成整数。

相关问题