首页 > 解决方案 > 替换单个列中的非零值,熊猫数据框

问题描述

我有这个熊猫数据框: rls[20, 34, 21, 19] censored[260, 0, 0, 380] 我试图用 1s 替换被审查列中的非零值。我尝试了许多不同的方法,但它们要么返回相同的数据帧副本,要么同时更改 rls 和审查列,这不是我想要的。感觉替换方法应该可以,但是我不知道如何指定非零值 data_rls.censored.replace([(!=0), 0], [1, 0], inplace=True)

标签: pandas

解决方案


欢迎来到 SO。请查看如何生成可重现的示例

您可以使用该pd.where()功能来解决您的问题。

import pandas as pd
df = pd.DataFrame({'a':[1,3,4,0,0,4,5],'b':[1,3,4,0,0,4,5]})
df.head()

     a  b
0    1  1   
1    3  3   
2    4  4   
3    0  0   
4    0  0


df['a'] = df['a'].where(df['a'] == 0, 1)
df

    a   b
0   1   1
1   1   3
2   1   4
3   0   0
4   0   0
5   1   4
6   1   5

推荐阅读