I am working at a predicition model for sports and I encountered this problem.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-27-90981affcf54> in <module>
18 #print("Home",home_rank)
19 #print("Visitor",visitor_rank)
---> 20 row["HomeTeamRanksHigher"] = int(home_rank) > int(visitor_rank)
21 a = int(int(home_rank) < int(visitor_rank))
22 dataset.at[index,"HomeTeamRanksHigher"] = a
~\anaconda3\lib\site-packages\pandas\core\series.py in wrapper(self)
127 if len(self) == 1:
128 return converter(self.iloc[0])
--> 129 raise TypeError(f"cannot convert the series to {converter}")
130
131 wrapper.__name__ = f"__{converter.__name__}__"
TypeError: cannot convert the series to <class 'int'>
Here is my code.
dataset["HomeTeamRanksHigher"]= 0
for index, row in dataset.iterrows():
home_team = row["Home"]
visitor_team = row["Away"]
home_rank = standings[standings["Squad"] == home_team]["Rk"]
visitor_rank = standings[standings["Squad"] == visitor_team]["Rk"]
#print("Home",home_rank)
#print("Visitor",visitor_rank)
row["HomeTeamRanksHigher"] = int(home_rank) > int(visitor_rank)
a = int(int(home_rank) < int(visitor_rank))
dataset.at[index,"HomeTeamRanksHigher"] = a
I checked the dtype of "HomeTeamRanksHigher" after I casted it to int and it is int64. I used pd.to_numeric and .astype(int) too.
standings["Rk"] = pd.to_numeric(standings["Rk"])
dataset["HomeTeamRanksHigher"] = pd.to_numeric(dataset["HomeTeamRanksHigher"])
Here are my columns data types
Country object
League object
Season object
Date datetime64[ns]
Time object
Home object
Away object
HG int64
AG int64
HomeWin bool
HomeLastWin int64
VisitorLastWin int64
HomeTeamRanksHigher int64
dtype: object
In Standings most of the columns are int64. I cannot post any more code