Python 用值替换excel中整个数据框中的字符串

Python 用值替换excel中整个数据框中的字符串,python,pandas,dataframe,valueerror,Python,Pandas,Dataframe,Valueerror,我从excel中得到了这种数据 dminerals=pd.read_excel(datafile) print(dminerals.head(5)) 然后我用这个脚本替换使用for循环的'Tr'和NaN值 for key, value in dminerals.iteritems(): dminerals[key] = dminerals[key].replace(to_replace='Tr', value=int(1)) dminerals[key] = dminera

我从excel中得到了这种数据

dminerals=pd.read_excel(datafile)
print(dminerals.head(5))

然后我用这个脚本替换使用for循环的'Tr'和NaN值

for key, value in dminerals.iteritems(): 
    dminerals[key] = dminerals[key].replace(to_replace='Tr', value=int(1))
    dminerals[key] = dminerals[key].replace(to_replace=np.nan, value=int(0))
然后再打印一次,它似乎可以打印数据帧类型,但它显示的是对象数据类型

print(dminerals.head(5))
print(dminerals['C'].dtypes)

我尝试使用此.astype将列['C']中的一列更改为整数,但结果是值错误

dminerals['C'].astype(int)
ValueError: invalid literal for int() with base 10: 'tr'

我想我已经将数据帧中的'Tr'更改为整数值了。在上述过程中,我有没有遗漏什么?请帮忙,提前谢谢

您正在将
Tr
替换为1,但是有一个
Tr
没有被替换(这就是您
ValueError
所说的。请记住python是区分大小写的。此外,使用for循环效率极低。您可能希望尝试使用以下代码行:

dminerales = dminerales.replace({'Tr':1,'tr':1}).fillna(0)
我使用的是
fillna()
,在这种情况下,使用指定的值
0
填充空值比使用repalce更好