根据条件用 0 和 1 替换数据框中的值
Replacing values in dataframe with 0s and 1s based on conditions
我要过滤和替换。对于低于或高于零而不是 NaN 的列,我想将一个和其他列设置为零。
mask = ((ts[x] > 0)
| (ts[x] < 0))
ts[mask]=1
ts[ts[x]==1]
我这样做了并且正在工作,但我必须处理不符合此条件的值替换为零。
有什么建议吗?我很困惑,在这种情况下使用 where 函数会更好吗?
谢谢大家!
示例数据
asset.relativeSetpoint.350
0 -60.0
1 0.0
2 NaN
3 100.0
4 0.0
5 NaN
6 -120.0
7 -245.0
8 0.0
9 123.0
10 0.0
11 -876.0
预期结果
asset.relativeSetpoint.350
0 1
1 0
2 0
3 1
4 0
5 0
6 1
7 1
8 0
9 1
10 0
11 1
使用apply
怎么样?
df[COLUMN_NAME] = df[COLUMN_NAME].apply(lambda x: 1 if x != 0 else 0)
您可以通过对两个条件应用逻辑与并将结果掩码转换为整数来实现。
df
asset.relativeSetpoint.350
0 -60.0
1 0.0
2 NaN
3 100.0
4 0.0
5 NaN
6 -120.0
7 -245.0
8 0.0
9 123.0
10 0.0
11 -876.0
(df['asset.relativeSetpoint.350'].ne(0)
& df['asset.relativeSetpoint.350'].notnull()).astype(int)
0 1
1 0
2 0
3 1
4 0
5 0
6 1
7 1
8 0
9 1
10 0
11 1
Name: asset.relativeSetpoint.350, dtype: int64
第一个条件 df['asset.relativeSetpoint.350'].ne(0)
获取所有不等于 0 的元素的布尔掩码(这将包括 <0、>0 和 NaN)。
第二个条件 df['asset.relativeSetpoint.350'].notnull()
将获得非 NaN 元素的布尔掩码。
两个掩码进行与运算,并转换为整数。
我要过滤和替换。对于低于或高于零而不是 NaN 的列,我想将一个和其他列设置为零。
mask = ((ts[x] > 0)
| (ts[x] < 0))
ts[mask]=1
ts[ts[x]==1]
我这样做了并且正在工作,但我必须处理不符合此条件的值替换为零。 有什么建议吗?我很困惑,在这种情况下使用 where 函数会更好吗?
谢谢大家!
示例数据
asset.relativeSetpoint.350
0 -60.0
1 0.0
2 NaN
3 100.0
4 0.0
5 NaN
6 -120.0
7 -245.0
8 0.0
9 123.0
10 0.0
11 -876.0
预期结果
asset.relativeSetpoint.350
0 1
1 0
2 0
3 1
4 0
5 0
6 1
7 1
8 0
9 1
10 0
11 1
使用apply
怎么样?
df[COLUMN_NAME] = df[COLUMN_NAME].apply(lambda x: 1 if x != 0 else 0)
您可以通过对两个条件应用逻辑与并将结果掩码转换为整数来实现。
df
asset.relativeSetpoint.350
0 -60.0
1 0.0
2 NaN
3 100.0
4 0.0
5 NaN
6 -120.0
7 -245.0
8 0.0
9 123.0
10 0.0
11 -876.0
(df['asset.relativeSetpoint.350'].ne(0)
& df['asset.relativeSetpoint.350'].notnull()).astype(int)
0 1
1 0
2 0
3 1
4 0
5 0
6 1
7 1
8 0
9 1
10 0
11 1
Name: asset.relativeSetpoint.350, dtype: int64
第一个条件 df['asset.relativeSetpoint.350'].ne(0)
获取所有不等于 0 的元素的布尔掩码(这将包括 <0、>0 和 NaN)。
第二个条件 df['asset.relativeSetpoint.350'].notnull()
将获得非 NaN 元素的布尔掩码。
两个掩码进行与运算,并转换为整数。