首页 > 解决方案 > ValueError: int() 以 10 为底的无效文字:'"034545104X"' Pandas Dataframe

问题描述

ratings["isbn"] = ratings["isbn"].astype(int)

尝试将列转换为整数格式以进行分析时出现此错误。我什至尝试替换 isbn 列中的引号和 X。即使那样我也得到了错误。

ratings_data['isbn'] = ratings_data['isbn'].replace({'"':''}, regex=True)
ratings_data['isbn'] = ratings_data['isbn'].replace({'X':''}, regex=True)

在此处输入图像描述

在此处输入图像描述

标签: pythonregexpandasdataframeliterals

解决方案


问题是还有许多其他字符串,例如X,您可以找到所有ISBN非仅以结尾X且没有数字的字符串:

ratings_data = pd.read_csv('BX-Book-Ratings.csv', sep=';')
# print(ratings_data.head(10))

df = ratings_data[~ratings_data['ISBN'].str.contains(r'^\d+$|^\d+X$')]
print(df)
         User-ID           ISBN  Book-Rating
54        276762     B0000BLD7X            0
55        276762    N3453124715            4
384       276884     B158991965            6
535       276929  2.02.032126.2            0
536       276929  2.264.03602.8            0
         ...            ...          ...
1146393   275970     014014904x            0
1147650   276009    01400.77022            0
1147916   276046     08348OO799           10
1148549   276331   \0432534220"            9
1149066   276556     055337849x           10

[3092 rows x 3 columns]

可能的解决方案是仅过滤带有X或数字的数据以进行处理:

ratings_data = pd.read_csv('BX-Book-Ratings.csv', sep=';')
# print(ratings_data.head(10))

ratings_data = ratings_data[ratings_data['ISBN'].str.contains(r'^\d+$|^\d+X$')]
print(ratings_data)
         User-ID         ISBN  Book-Rating
0         276725   034545104X            0
1         276726   0155061224            5
2         276727   0446520802            0
3         276729   052165615X            3
4         276729   0521795028            6
         ...          ...          ...
1149775   276704   1563526298            9
1149776   276706   0679447156            0
1149777   276709   0515107662           10
1149778   276721   0590442449           10
1149779   276723  05162443314            8

[1146688 rows x 3 columns]

ratings_data['ISBN'] = ratings_data['ISBN'].replace({'X':''}, regex=True).astype(np.int64)
print(ratings_data)
         User-ID        ISBN  Book-Rating
0         276725    34545104            0
1         276726   155061224            5
2         276727   446520802            0
3         276729    52165615            3
4         276729   521795028            6
         ...         ...          ...
1149775   276704  1563526298            9
1149776   276706   679447156            0
1149777   276709   515107662           10
1149778   276721   590442449           10
1149779   276723  5162443314            8

[1146688 rows x 3 columns]

推荐阅读