ValueError: 基数为 10 的 int() 的文字无效:'"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)

enter image description here

enter image description here

解决方法

问题是还有很多像 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]