ValueError:对于以10为基数的int(),文本无效:'100/100'我的数据集有一个评级列,该列以对象的形式保存评级,表示为:98/100、99/100、60/100等我需要将此列转换为int,例如:98、99、60等。我试了.astype和int(float())。
.astype
int(float())
ih99xse11#
考虑到:1.你说的是Pandas Dataframe1.每个等级的形式为X/100,如果不是,则可以在下面的lambda函数中进行基本计算。可以使用apply方法,然后使用astype将列转换为整数值:
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,则采用更通用的计算:
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,你可以使用它:-)
3npbholx2#
'98/100'是表示分数的字符串。@no_hex的答案显示了一种使用字符串操作解析分子的方法,但是Python也支持分数,所以使用分数可能更容易。
'98/100'
>> from fractions import Fraction >> s = "98/100" >> int(Fraction(s) * 100) 98
附带的好处是,如果分数分母不同,这也会给予正确的答案。
>> s = "3/4" >> float(Fraction(s) * 100) 75.0
bbmckpt73#
s = '60/100' int(s.split('/')[0])
aydmsdu94#
你必须把它四舍五入到最接近的整数值,然后你可以把它转换成整数,例如3/5将是0.6,但是如果你尝试转换,它不会工作,因为它是一个十进制值,但是如果你把它四舍五入,你可以把它转换成整数也取决于你想做什么
6za6bjd05#
请尝试以下代码:
result = int(valueOfyoucolumn) * 100
这样,你就去掉了分数,并把结果转换成整数。
5条答案
按热度按时间ih99xse11#
考虑到:
1.你说的是Pandas Dataframe
1.每个等级的形式为
X/100
,如果不是,则可以在下面的lambda
函数中进行基本计算。可以使用
apply
方法,然后使用astype
将列转换为整数值:退货:
如果等级的格式为
X/Y
,则采用更通用的计算:或者很快,但是extremely unsafe根本不是一个好的实践:
如果你只是在"摆弄" Python,你可以使用它:-)
3npbholx2#
'98/100'
是表示分数的字符串。@no_hex的答案显示了一种使用字符串操作解析分子的方法,但是Python也支持分数,所以使用分数可能更容易。
附带的好处是,如果分数分母不同,这也会给予正确的答案。
bbmckpt73#
aydmsdu94#
你必须把它四舍五入到最接近的整数值,然后你可以把它转换成整数,例如3/5将是0.6,但是如果你尝试转换,它不会工作,因为它是一个十进制值,但是如果你把它四舍五入,你可以把它转换成整数
也取决于你想做什么
6za6bjd05#
请尝试以下代码:
这样,你就去掉了分数,并把结果转换成整数。