df1 = df1.loc[:, selList]
时间: 2024-06-14 14:08:05 浏览: 11
`df1 = df1.loc[:, selList]`是一种使用`loc`方法按照列名进行筛选的操作。它会返回一个新的DataFrame,其中只包含`df1`中`selList`列表中指定的列。
以下是一个示例:
```python
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, , 9]})
selList = ['A', 'C']
df1 = df1.loc[:, selList]
print(df1)
```
输出:
```
A C
0 1 7
1 2 8
2 3 9
```
相关问题
df1 = pd.concat([df1, df.loc[:, "diagnosis"]], axis = 1)
这是一个 pandas 库的 DataFrame 对象的方法,用于将两个 DataFrame 按照列(axis=1)进行拼接(concat)。其中的 df1 和 df 是两个要进行拼接的 DataFrame 对象,"diagnosis" 是 df 中的一列数据。该方法会将 df 中的 "diagnosis" 列添加到 df1 的最右侧,形成一个新的 DataFrame 对象。请注意,这里的 df1 和 df 必须是具有相同列数的 DataFrame,否则会报错。
if df1.loc['下行带宽'] == '100M' and df1.loc['下行速率'] < 50: df1['低速率差小区'] = '是' else: df1['低速率差小区'] = '否' if df1.loc['下行带宽'] == '40M' and df1.loc['下行速率'] < 30: df1['低速率差小区'] = '是' else: df1['低速率差小区'] = '否' if df1.loc['下行带宽'] == '20M' and df1.loc['下行速率'] < 10: df1['低速率差小区'] = '是' else: df1['低速率差小区'] = '否' if df1.loc['下行带宽'] == '5M' and df1.loc['下行速率'] < 2.5: df1['低速率差小区'] = '是' else: df1['低速率差小区'] = '否' if df1.loc['下行带宽'] == '80M' and df1.loc['下行速率'] < 40: df1['低速率差小区'] = '是' else: df1['低速率差小区'] = '否' if df1.loc['下行带宽'] == '200M' and df1.loc['下行速率'] < 100: df1['低速率差小区'] = '是' else: df1['低速率差小区'] = '否'
根据你提供的代码,你想要根据不同的条件对DataFrame进行筛选,并将结果存储在`df1['低速率差小区']`列中。但是,你的代码中存在一个问题:每个条件都会覆盖前一个条件设置的值,导致最终结果只会反映最后一个条件的结果。
为了解决这个问题,你可以使用`numpy.select()`函数来对多个条件进行筛选并设置对应的值。以下是修正后的代码示例:
```python
import numpy as np
conditions = [
(df1.loc['下行带宽'] == '100M') & (df1.loc['下行速率'] < 50),
(df1.loc['下行带宽'] == '40M') & (df1.loc['下行速率'] < 30),
(df1.loc['下行带宽'] == '20M') & (df1.loc['下行速率'] < 10),
(df1.loc['下行带宽'] == '5M') & (df1.loc['下行速率'] < 2.5),
(df1.loc['下行带宽'] == '80M') & (df1.loc['下行速率'] < 40),
(df1.loc['下行带宽'] == '200M') & (df1.loc['下行速率'] < 100)
]
choices = ['是', '是', '是', '是', '是', '是']
df1['低速率差小区'] = np.select(conditions, choices, default='否')
```
修正后的代码会根据不同的条件,分别对应设置`choices`中的值。如果没有任何条件满足,则会使用`default`参数中的值。注意,你需要导入NumPy库来使用`np.select()`函数。
这样,你就可以根据多个条件对DataFrame进行筛选,并根据条件结果设置相应的值。