我是Python的新手,正在学习一些东西。
我有一个用字符串编码的数据集。列表列包含列表中所有列的名称。
columns = ['median', 'p25th', 'p75th']
在此数据集中,数字以字符串形式存储。有些列没有数字,并以 UN 表示,如下所示:
['110000''75000''73000''70000''65000''UN''62000']
['95000''55000''50000''43000''UN''31500''48000']
['125000''90000''105000''80000''75000''102000''UN''109000']
我需要使用np.nan将 UN 替换为 NaN 。 我在下面使用了这段代码:
for column in columns:
recent_grads.loc[column =='UN', column] = np.nan
但是我一直收到此错误:
回溯(最近通话最近一次):
文件“”,第15行,位于last_grads.loc [column =='UN', 栏] = np.nan
文件“”,第194行,位于设置项中 self._setitem_with_indexer(indexer,value)文件“”,第332行,在_setitem_with_indexer中 键,_ = convert_missing_indexer(idx)
文件“”,第2049行,在convert_missing_indexer中 引发KeyError(“不能使用单个布尔值索引到setitem”)KeyError:'不能使用单个布尔值索引到setitem'
您能告诉我我要去哪里吗?抱歉,这听起来太基础了。
答案 0 :(得分:1)
您可以尝试使用Pandas DataFrame replace
,如图here
数据
d = [['median', 'p25th', 'p75th'],
['110000','75000','73000','70000','65000','UN','62000'],
['95000','55000','50000','43000','UN','31500','48000'],
['125000','90000','80000','75000','102000','UN','109000']
]
recent_grads = pd.DataFrame(zip(*d[1:]), columns=d[0])
print(recent_grads)
median p25th p75th
0 110000 95000 125000
1 75000 55000 90000
2 73000 50000 80000
3 70000 43000 75000
4 65000 UN 102000
5 UN 31500 UN
6 62000 48000 109000
代码
import numpy as np
columns = ['median', 'p25th', 'p75th']
recent_grads[columns] = recent_grads[columns].replace('UN', np.nan)
print(recent_grads)
median p25th p75th
0 110000 95000 125000
1 75000 55000 90000
2 73000 50000 80000
3 70000 43000 75000
4 65000 NaN 102000
5 NaN 31500 NaN
6 62000 48000 109000