Python 用值替换excel中整个数据框中的字符串
我从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
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更好