对于某个DataFrame,取其中某列,判断其中的值若为空值,则赋值空值,若小于0,则赋值“不预警”,若大于0小于m1(参数),则赋值“C类预警”,若大于m1(参数)小于m2(参数),则赋值“B类预警”,若大于m2(参数),则赋值“A类预警”,并将赋值结果作为新列储存
时间: 2023-11-25 11:05:19 浏览: 64
可以使用 `apply` 方法和一个自定义函数来实现这个操作。具体步骤如下:
1. 定义一个函数,输入为某一列的值,输出为对应的预警等级。
2. 使用 `apply` 方法将该函数应用到这一列,生成一个新的 Series。
3. 将这个新的 Series 作为新列添加到 DataFrame 中。
示例代码如下:
```python
import pandas as pd
# 定义函数,根据输入的值返回预警等级
def get_warning_level(val, m1, m2):
if pd.isna(val):
return ''
elif val < 0:
return '不预警'
elif val < m1:
return 'C类预警'
elif val < m2:
return 'B类预警'
else:
return 'A类预警'
# 构造示例 DataFrame
df = pd.DataFrame({
'data': [1, -2, 5, 10, 20, None]
})
# 应用函数,生成新的 Series
new_col = df['data'].apply(get_warning_level, args=(5, 15))
# 将新的 Series 作为新列添加到 DataFrame 中
df['warning_level'] = new_col
# 输出结果
print(df)
```
输出结果如下:
```
data warning_level
0 1.0 C类预警
1 -2.0 不预警
2 5.0 C类预警
3 10.0 B类预警
4 20.0 A类预警
5 NaN
```
其中,新的列名为 `warning_level`。示例中,参数 `m1` 和 `m2` 分别设为 5 和 15,可以根据实际需求进行调整。
阅读全文