我在 Pandas 数据框中有以下数据点:
DateTime Data
2017-11-21 18:54:31 1
2017-11-22 02:26:48 2
2017-11-22 10:19:44 3
2017-11-22 15:11:28 6
2017-11-22 23:21:58 7
2017-11-28 14:28:28 28
2017-11-28 14:36:40 0
2017-11-28 14:59:48 1
我想应用一个函数将所有大于 1 的数据值转换为 1: 有没有办法将以下两个 lambda 函数合并为一个(如 else 语句)?
[(lambda x: x/x)(x) for x in df['Data'] if x > 0]
[(lambda x: x)(x) for x in df['Data'] if x <1 ]
期望的最终结果:
DateTime Data
2017-11-21 18:54:31 1
2017-11-22 02:26:48 1
2017-11-22 10:19:44 1
2017-11-22 15:11:28 1
2017-11-22 23:21:58 1
2017-11-28 14:28:28 1
2017-11-28 14:36:40 0
2017-11-28 14:59:48 1
请您参考如下方法:
使用 np.clip 的 Numpy 解决方案 -
df['Data'] = np.clip(df.Data.values, a_min=None, a_max=1)
df
DateTime Data
0 2017-11-21 18:54:31 1
1 2017-11-22 02:26:48 1
2 2017-11-22 10:19:44 1
3 2017-11-22 15:11:28 1
4 2017-11-22 23:21:58 1
5 2017-11-28 14:28:28 1
6 2017-11-28 14:36:40 0
7 2017-11-28 14:59:48 1
传递 a_min=None 以指定无下限。
