python - 在熊猫中第一次达到设定值时重命名
问题描述
我有一个数据集,当数据第一次达到 <0.5 时,我想给它一个不同的名称。我只想为该特定事件命名,而不是之后的事件。到目前为止,我只能识别为一个组,见下文。
这可能吗?
样本数据集:
日期和时间 | 过程价值 | 地位 |
---|---|---|
2020-06-07 00:00 | 8.2 | 一个 |
2020-06-07 01:00 | 6.5 | 一个 |
2020-06-07 02:00 | 4.3 | 一个 |
2020-06-07 03:00 | 3.6 | 一个 |
2020-06-07 04:00 | 0 | 乙 |
2020-06-07 05:00 | 0 | 乙 |
2020-06-07 06:00 | 0 | 乙 |
预期结果:
日期和时间 | 过程价值 | 地位 |
---|---|---|
2020-06-07 00:00 | 8.2 | 一个 |
2020-06-07 01:00 | 6.5 | 一个 |
2020-06-07 02:00 | 4.3 | 一个 |
2020-06-07 03:00 | 3.6 | 一个 |
2020-06-07 04:00 | 0 | 停止 |
2020-06-07 05:00 | 0 | 乙 |
2020-06-07 06:00 | 0 | 乙 |
解决方案
使用布尔值,然后.groupby.idxmin()
获取每个组的最小索引。
然后使用广播你的价值.loc
s = df.loc[df['Process value'].le(0.5)].groupby('Status').idxmin()['Process value']
df.loc[s,'Status'] = 'stopped'
print(df)
Date and Time Process value Status
0 2020-06-07 00:00 8.2 A
1 2020-06-07 01:00 6.5 A
2 2020-06-07 02:00 4.3 A
3 2020-06-07 03:00 3.6 A
4 2020-06-07 04:00 0.0 stopped
5 2020-06-07 05:00 0.0 B
6 2020-06-07 06:00 0.0 B
推荐阅读
- c# - 如何从WhenAll(任务数组)中获取结果
- python-3.x - 在 os 模块中给出字符串时出现问题
- device - AWS Device Farm 是否支持 CodeCeptJS?
- c - 谷歌测试中的存根系统功能
- c# - 以不同的方法使用全局控件
- sql - 通过某些列 id 选择主表和关系表
- javascript - 为什么 fetch 返回 promise 未决?
- javascript - Angular/Firebase:如何将用户响应放在前端模型中
- spring - 带有排序的spring mongoDB聚合不起作用
- react-native - 应用程序在 Android 中关闭并重新打开后,嵌套堆栈导航器重置为 initialRoute(无需滑动)