python - np.where( ) 不改变所有的值

标签 python pandas numpy

df['view'] = np.where(df['view']==0, 'No view', df['view'])
df['view'] = np.where(df['view']==1, 'Mediocore', df['view'])
df['view'] = np.where(df['view']==2, 'Average', df['view'])
df['view'] = np.where(df['view']==3, 'Good', df['view'])
df['view'] = np.where(df['view']==4, 'Very good', df['view'])

我有一个房价数据集,其中“ View ”列按 1-4 的等级对 View 进行评分。我想使用此操作将它们更改为字符串,但是这段代码仅适用于第一行。

df['view'].value_counts()

-No view    4140
 2           205
 3           116
 4            70
 1            69
 Name: view, dtype: int64

我如何让 np.where() 也为它们的其余部分工作?

最佳答案

Numpy 会在第一次调用时将数组转换为字符串,这意味着列中不再有 1,而是“1”。

这段代码可以工作:

df['view'] = np.where(df['view']==0, 'No view', df['view'])
df['view'] = np.where(df['view']=='1', 'Mediocore', df['view'])
df['view'] = np.where(df['view']=='2', 'Average', df['view'])
df['view'] = np.where(df['view']=='3', 'Good', df['view'])
df['view'] = np.where(df['view']=='4', 'Very good', df['view'])

我知道您问过如何让 numpy 的“在哪里”工作,我认为上面的内容确实如此。但值得一提的是,pandas apply 在这里也可能工作得很好,按照布局与字典进行映射,另一个答案会更好。

关于python - np.where( ) 不改变所有的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70744100/

相关文章:

python - MYSQL 数据插入查询在 Python 中不起作用

python - sympylambdaify 添加两个函数

python - 即使在使用 .loc 之后,Pandas 仍然会收到 SettingWithCopyWarning

numpy - 与实空间卷积相比,FFT 卷积的缺点是什么?

python - numpy 数组绘图矩阵 matplotlib

python - 请帮助我通过此错误消息来破解吗? - python

python - 将操作数据帧的函数应用到 groupby

python - 转置多列 Pandas 数据框

pandas - AWS Lambda 函数中缺少必需的依赖项 ['numpy' ]

python - Selenium在完成所有功能后单独关闭浏览器