用值替换 excel 中整个数据框中的字符串
replace a string in entire dataframe from excel with value
我有来自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))
然后再次打印它,它似乎工作并打印数据帧types.But它显示对象数据类型。
print(dminerals.head(5))
print(dminerals['C'].dtypes)
我尝试使用此 .astype 将其中一列 ['C'] 更改为整数,但结果是值错误
dminerals['C'].astype(int)
ValueError: invalid literal for int() with base 10: 'tr'
我以为我已经将数据框中的 'Tr' 更改为整数值。在上面的过程中有什么我想念的吗?请帮忙,提前谢谢!
您正在用 1 替换 Tr
,但是有一个 tr
没有被替换(这就是您 ValueError
所说的。记住 python 是大小写敏感。此外,使用 for 循环的效率极低,您可能想尝试使用以下代码行:
dminerales = dminerales.replace({'Tr':1,'tr':1}).fillna(0)
我使用的是 fillna()
在这种情况下用指定值 0
填充空值也更好,而不是使用 repalce。
我有来自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))
然后再次打印它,它似乎工作并打印数据帧types.But它显示对象数据类型。
print(dminerals.head(5))
print(dminerals['C'].dtypes)
我尝试使用此 .astype 将其中一列 ['C'] 更改为整数,但结果是值错误
dminerals['C'].astype(int)
ValueError: invalid literal for int() with base 10: 'tr'
我以为我已经将数据框中的 'Tr' 更改为整数值。在上面的过程中有什么我想念的吗?请帮忙,提前谢谢!
您正在用 1 替换 Tr
,但是有一个 tr
没有被替换(这就是您 ValueError
所说的。记住 python 是大小写敏感。此外,使用 for 循环的效率极低,您可能想尝试使用以下代码行:
dminerales = dminerales.replace({'Tr':1,'tr':1}).fillna(0)
我使用的是 fillna()
在这种情况下用指定值 0
填充空值也更好,而不是使用 repalce。