f1['下行带宽'] = df1['下行带宽'].replace('$null$', np.nan) # 将 '$null$' 替换为 NaN # df1['下行带宽'] = df1['下行带宽'].str.strip('M') # 去除 '下行带宽' 列中的 'M' 字符 # df1['下行带宽'] = pd.to_numeric(df1['下行带宽'], errors='coerce') # 强制将数据转换为数值型,无法转换的值将被设置为 NaN # df1['下行带宽'] = df1['下行带宽'].fillna(0).astype(int) # 将缺失值替换为 0,并将数据类型转换为整数 df1['下行速率'] = df1['下行速率'].replace('$null$', np.nan) # 将 'NULL' 替换为 NaN # df1['下行速率'] = df1['下行速率'].fillna(0) # 将缺失值替换为 0 df1['下行速率'] = df1['下行速率'].astype(float) # 先转换为浮点数 conditions = [ (df1['下行带宽'] == '100M') & (df1['下行速率'] < 50), (df1['下行带宽'] == '40M') & (df1['下行速率'] < 30), (df1['下行带宽'] == '20M') & (df1['下行速率'] < 10), (df1['下行带宽'] == '5M') & (df1['下行速率'] < 2.5), (df1['下行带宽'] == '80M') & (df1['下行速率'] < 40), (df1['下行带宽'] == '200M') & (df1['下行速率'] < 100) ] choices = ['是', '是', '是', '是', '是', '是'] df1['低速率差小区'] = np.select(conditions, choices, default='否') 以上代码计算为是的有问题
时间: 2023-09-17 07:10:07 浏览: 82
带宽的算法
5星 · 资源好评率100%
根据您提供的代码,如果要根据条件计算列 `'低速率差小区'`,可以使用以下代码:
```python
df1['下行带宽'] = df1['下行带宽'].replace('$null$', np.nan) # 将 '$null$' 替换为 NaN
df1['下行速率'] = df1['下行速率'].replace('NULL', np.nan) # 将 'NULL' 替换为 NaN
df1['下行带宽'] = df1['下行带宽'].str.strip('M') # 去除 '下行带宽' 列中的 'M' 字符
df1['下行带宽'] = pd.to_numeric(df1['下行带宽'], errors='coerce') # 强制将数据转换为数值型,无法转换的值将被设置为 NaN
conditions = [
(df1['下行带宽'] == 100) & (df1['下行速率'] < 50),
(df1['下行带宽'] == 40) & (df1['下行速率'] < 30),
(df1['下行带宽'] == 20) & (df1['下行速率'] < 10),
(df1['下行带宽'] == 5) & (df1['下行速率'] < 2.5),
(df1['下行带宽'] == 80) & (df1['下行速率'] < 40),
(df1['下行带宽'] == 200) & (df1['下行速率'] < 100)
]
choices = ['是', '是', '是', '是', '是', '是']
df1['低速率差小区'] = np.select(conditions, choices, default='否')
```
在上述代码中,我们首先将 `'下行带宽'` 列中的 `'$null$'` 替换为 NaN,将 `'下行速率'` 列中的 `'NULL'` 替换为 NaN。然后,使用 `.strip('M')` 去除 `'下行带宽'` 列中的 `'M'` 字符,并使用 `pd.to_numeric()` 强制将其转换为数值型,无法转换的值将被设置为 NaN。
接下来,我们定义了条件列表 `conditions` 和选择列表 `choices`,根据这些条件和选择创建了 `'低速率差小区'` 列。
请注意,这里假设你已经导入了 `pandas` 和 `numpy` 库。
如果你还有其他问题,请随时提问。
阅读全文