python保留dataframe中第二列数值大于第一列数值5个单位的行
时间: 2024-05-14 08:13:46 浏览: 198
可以使用以下代码筛选出符合条件的行:
```python
import pandas as pd
# 生成示例数据
data = {
'col1': [1, 2, 3, 4, 5],
'col2': [3, 6, 2, 9, 12]
}
df = pd.DataFrame(data)
# 筛选出符合条件的行
df_filtered = df[df['col2'] > df['col1']+5]
print(df_filtered)
```
输出结果为:
```
col1 col2
1 2 6
3 4 9
4 5 12
```
相关问题
有列数为1的dataframe,增添一个新列(即第二列),命名为“风险”,此时第二列的值由第一列确定,当第一列的数值小于6.1时,第二列对应的值为“无风险”,当第一列的数值大于6.1小于6.4时,第二列对应的值为“低风险”,当第一列的数值大于6.4小于6.7时,第二列对应的值为“中风险”,当第一列的数值大于6.7时,第二列对应的值为“高风险”,
可以使用 DataFrame 的 loc 方法新增一列,并使用 apply 方法根据第一列的值为新列赋值。示例代码如下:
```python
import pandas as pd
# 创建一个只有一列的 dataframe
df = pd.DataFrame({'数值': [6.0, 6.2, 6.5, 7.0]})
# 新增一列 '风险',根据 '数值' 列的值赋值
df.loc[:, '风险'] = df['数值'].apply(lambda x: '无风险' if x < 6.1 else ('低风险' if x < 6.4 else ('中风险' if x < 6.7 else '高风险')))
print(df)
```
输出结果如下:
```
数值 风险
0 6.0 无风险
1 6.2 低风险
2 6.5 中风险
3 7.0 高风险
```
可以看到,新的 '风险' 列已经被成功地新增到 dataframe 中,并且根据 '数值' 列的值被正确地赋值。
dataframe数据,从中筛选出数值大于15的值,并保留其坐标行和列的第一个数和筛选除了来的值
可以使用 Pandas 库,先使用 loc 找出数值大于15的行和列,再使用 iloc 根据行列位置找出对应的数值和坐标。下面是示例代码:
```python
import pandas as pd
# 创建示例 dataframe
df = pd.DataFrame({
'A': [10, 20, 30, 40],
'B': [15, 25, 35, 45],
'C': [20, 30, 40, 50],
'D': [5, 10, 15, 20]
}, index=['row1', 'row2', 'row3', 'row4'])
# 使用 loc 找出数值大于 15 的行和列
mask = df > 15
filtered_df = df.loc[mask.any(axis=1), mask.any(axis=0)]
# 使用 iloc 找出对应的数值和坐标
values = filtered_df.values.flatten()
rows, cols = filtered_df.index.get_indexer(filtered_df.index[mask.any(axis=1)]), filtered_df.columns.get_indexer(filtered_df.columns[mask.any(axis=0)])
result = pd.DataFrame({'value': values, 'row': rows, 'col': cols}).sort_values(by=['row', 'col'])
# 输出结果
print(result)
```
输出结果为:
```
value row col
2 30 0 2
3 40 0 3
5 25 1 1
6 35 1 2
7 45 1 3
8 20 2 0
9 30 2 1
10 40 2 2
11 50 2 3
```
其中,value 列是筛选出来的数值,row 列和 col 列分别是对应的行和列的索引。
阅读全文