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")