在特定列中将正数和 NaN 转换为 1,将负数转换为 0
Convert positive numbers and NaN to 1 and negative numbers to 0 in a specific column
我有一个带有时间戳和相应值的大型 csv 文件。有没有一种简单方便的方法可以将所有正数(在第 1 列中)和 NaN 转换为 1,将负数转换为 0?我想将新数据框保存到新的 csv 文件中。示例:
来自:
0 1
0 2020-01-01 00:00:00+00:00 123.97
1 2020-01-01 00:04:00+00:00 NaN
2 2020-01-01 00:05:00+00:00 157.03
3 2020-01-01 00:06:00+00:00 184.82
4 2020-01-01 00:07:00+00:00 -197.36
至:
0 1
0 2020-01-01 00:00:00+00:00 1
1 2020-01-01 00:04:00+00:00 1
2 2020-01-01 00:05:00+00:00 1
3 2020-01-01 00:06:00+00:00 1
4 2020-01-01 00:07:00+00:00 0
我认为这里最简单的是使用 numpy.where
with Series.lt
来代替 0
:
df[1] = np.where(df[1].lt(0), 0, 1)
或反转掩码并转换为整数:
df[1] = (~df[1].lt(0)).astype(int)
我有一个带有时间戳和相应值的大型 csv 文件。有没有一种简单方便的方法可以将所有正数(在第 1 列中)和 NaN 转换为 1,将负数转换为 0?我想将新数据框保存到新的 csv 文件中。示例:
来自:
0 1
0 2020-01-01 00:00:00+00:00 123.97
1 2020-01-01 00:04:00+00:00 NaN
2 2020-01-01 00:05:00+00:00 157.03
3 2020-01-01 00:06:00+00:00 184.82
4 2020-01-01 00:07:00+00:00 -197.36
至:
0 1
0 2020-01-01 00:00:00+00:00 1
1 2020-01-01 00:04:00+00:00 1
2 2020-01-01 00:05:00+00:00 1
3 2020-01-01 00:06:00+00:00 1
4 2020-01-01 00:07:00+00:00 0
我认为这里最简单的是使用 numpy.where
with Series.lt
来代替 0
:
df[1] = np.where(df[1].lt(0), 0, 1)
或反转掩码并转换为整数:
df[1] = (~df[1].lt(0)).astype(int)