筛选dataframe几列中大于0的最小值
时间: 2024-11-10 19:25:07 浏览: 10
在 Pandas 中,你可以通过组合几个函数来筛选 DataFrame 的多列,并找到其中大于0的最小值。假设你有一个名为 `df` 的 DataFrame,含有多列 `column1`, `column2`, 和 `column3`,你可以这样做:
```python
# 首先选取所有大于0的行
filtered_df = df[df > 0]
# 使用 `idxmin()` 函数沿着指定轴(默认是列)找到每个非空组(即大于0的行)中每列的第一个大于0的值
min_values = filtered_df.min(axis=1)
# 结果是一个 Series,包含了每一行(即一组列)中最小的非零值
min_values_series = min_values
# 如果需要找到对应的原索引,可以使用 `reset_index()` 将 Series 转回 DataFrame 并添加索引列
result_df = min_values_series.reset_index(drop=True)
```
这样 `result_df` 就会包含各组中大于0的最小值及其所在的行索引。
相关问题
DataFrame求其非0最小值
可以使用pandas库中的`replace()`方法将DataFrame中的0元素替换为NaN,然后使用`min()`方法求取非0最小值。具体的代码如下:
```python
import pandas as pd
# 构造一个示例DataFrame
df = pd.DataFrame({'A': [0, 2, 0], 'B': [3, 0, 4], 'C': [0, 5, 6]})
# 将DataFrame中的0元素替换为NaN
df = df.replace(0, pd.np.nan)
# 求取非0最小值
min_val = df.min().min()
# 输出结果
print(min_val)
```
在这个示例中,我们首先构造了一个DataFrame对象df,然后使用`replace()`方法将其中的0元素替换为NaN,接着使用`min()`方法求取非0最小值。需要注意的是,由于DataFrame中有多列,所以需要在第一次`min()`方法后再使用一次`min()`方法来求取所有列的最小值。最后输出结果即可。
pandas 选取一个DataFrame几列,新建一个DataFrame
您好!在 Pandas 中,可以使用 loc 或 iloc 方法来选取 DataFrame 的列,然后将选取的列作为参数传入 DataFrame 的构造函数中,新建一个 DataFrame。下面是一个示例代码:
```python
import pandas as pd
# 假设有一个名为 data 的 DataFrame,它有三列,分别为 'A'、'B' 和 'C'
data = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
# 选取 'A' 和 'B' 列,并新建一个 DataFrame
new_data = pd.DataFrame(data.loc[:, ['A', 'B']])
```
上述代码中,loc[:, ['A', 'B']] 表示选取所有行(即 :),并选取列名为 'A' 和 'B' 的两列数据。然后将选取的数据传入 DataFrame 的构造函数中,新建了一个名为 new_data 的 DataFrame。
阅读全文