TypeError: '<=' not supported between instances of 'str' and 'int' Duplicate
TypeError: '<=' not supported between instances of 'str' and 'int' Duplicate
我正在使用 Python3 并且我正在处理几个文件,其中我的一些数据(AYield 和 BYield)丢失,这被认为是 NaN,但是,当我 运行代码的最后一行,我得到一个错误。 Ask 和 Bid 数据框都包含相同的行和列。谢谢
Askyield = pd.read_excel("AYield.xlsx",na_values=["NaN"])
Bidyield = pd.read_excel("BYield.xlsx",na_value=["NaN"])
matchedbond_info = pd.read_excel("matched_bonds.xlsx")
Askyield = pd.merge(matchedbond_info, Askyield, on = ['ISIN'])
Bidyield = pd.merge(matchedbond_info, Bidyield, on = ['ISIN'])
date_list = []
for i in range(len(Bidyield.columns)):
if isinstance(Bidyield.columns[i], dt.datetime):date_list.append(Bidyield.columns[i])
matchedbond_info = Bidyield.drop(columns=date_list)
bid_yield.info()
bid_yield.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1236 entries, 0 to 1235
Columns: 1566 entries, 2019-12-31 00:00:00 to 2014-01-01 00:00:00
dtypes: float64(1566)
bid_yield = Bidyield[date_list]
ask_yield = Askyield[date_list]
bid_yield.head()
2019-12-31 2019-12-30 2019-12-27 ... 2014-01-03 2014-01-02 2014-01-01
0 NaN NaN NaN ... NaN NaN NaN
1 3.119 3.084 3.081 ... NaN NaN NaN
2 NaN NaN NaN ... NaN NaN NaN
3 NaN NaN NaN ... NaN NaN NaN
4 NaN NaN NaN ... NaN NaN NaN
[5 rows x 1566 columns]
bid_yield = bid_yield.mask((bid_yield >0) & (ask_yield <0))
然后我得到以下内容
TypeError: '<' not supported between instances of 'str' and 'int'
我可以用这个例子重现这个错误:
import pandas as pd
df = pd.DataFrame(dict(x=["5", "10"],
y=[1, 4]))
df.dtypes
# x object
# y int64
# dtype: object
df[df.x > df.y]
# TypeError: '>' not supported between instances of 'str' and 'int'
您可能需要将其中一列转换为浮点数。
在这个例子中:
df['x'] = df.x.astype("float")
我正在使用 Python3 并且我正在处理几个文件,其中我的一些数据(AYield 和 BYield)丢失,这被认为是 NaN,但是,当我 运行代码的最后一行,我得到一个错误。 Ask 和 Bid 数据框都包含相同的行和列。谢谢
Askyield = pd.read_excel("AYield.xlsx",na_values=["NaN"])
Bidyield = pd.read_excel("BYield.xlsx",na_value=["NaN"])
matchedbond_info = pd.read_excel("matched_bonds.xlsx")
Askyield = pd.merge(matchedbond_info, Askyield, on = ['ISIN'])
Bidyield = pd.merge(matchedbond_info, Bidyield, on = ['ISIN'])
date_list = []
for i in range(len(Bidyield.columns)):
if isinstance(Bidyield.columns[i], dt.datetime):date_list.append(Bidyield.columns[i])
matchedbond_info = Bidyield.drop(columns=date_list)
bid_yield.info()
bid_yield.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1236 entries, 0 to 1235
Columns: 1566 entries, 2019-12-31 00:00:00 to 2014-01-01 00:00:00
dtypes: float64(1566)
bid_yield = Bidyield[date_list]
ask_yield = Askyield[date_list]
bid_yield.head()
2019-12-31 2019-12-30 2019-12-27 ... 2014-01-03 2014-01-02 2014-01-01
0 NaN NaN NaN ... NaN NaN NaN
1 3.119 3.084 3.081 ... NaN NaN NaN
2 NaN NaN NaN ... NaN NaN NaN
3 NaN NaN NaN ... NaN NaN NaN
4 NaN NaN NaN ... NaN NaN NaN
[5 rows x 1566 columns]
bid_yield = bid_yield.mask((bid_yield >0) & (ask_yield <0))
然后我得到以下内容
TypeError: '<' not supported between instances of 'str' and 'int'
我可以用这个例子重现这个错误:
import pandas as pd
df = pd.DataFrame(dict(x=["5", "10"],
y=[1, 4]))
df.dtypes
# x object
# y int64
# dtype: object
df[df.x > df.y]
# TypeError: '>' not supported between instances of 'str' and 'int'
您可能需要将其中一列转换为浮点数。
在这个例子中:
df['x'] = df.x.astype("float")