一个dataframe两列进行比较,如果两个值相等不处理,如果两个值不相等,保留最小的值,然后把最大值比最小值多的数取出来放入一个dataframe
时间: 2024-03-13 12:42:51 浏览: 21
可以使用如下代码实现:
```python
import pandas as pd
# 假设df为原始的dataframe,col1和col2为需要比较的两列
df = pd.DataFrame({'col1': [1, 2, 3, 4, 5], 'col2': [1, 2, 5, 6, 7]})
# 比较两列,取出最小值
df['min_val'] = df[['col1', 'col2']].min(axis=1)
# 找出最大值比最小值多的数
diff = df[['col1', 'col2']].max(axis=1) - df['min_val']
# 将结果放入新的dataframe
result_df = df.loc[diff > 0, ['col1', 'col2', 'min_val']]
```
解释一下代码:
首先,我们创建一个包含两列数据的dataframe,名为df。然后,我们使用pandas的min函数比较两列的值,取出最小值,将结果存放在新的一列min_val中。
接下来,我们计算最大值比最小值多的数,将结果存放在变量diff中。
最后,我们使用loc函数找出最大值比最小值多的数所在的行,并将结果存放在新的dataframe中,名为result_df。result_df包含三列数据,分别为col1、col2和min_val。
相关问题
python 两个dataframe某一列值相等的行,则copy给另一个dataframe
可以使用 pandas 库中的 merge 函数来实现。具体操作如下:
```python
import pandas as pd
# 创建两个示例 dataframe
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'c']})
df2 = pd.DataFrame({'A': [2, 3, 4], 'C': ['d', 'e', 'f']})
# 使用 merge 函数将两个 dataframe 按照 A 列进行合并
result = pd.merge(df1, df2, on='A', how='inner')
# 打印合并结果
print(result)
```
其中,on 参数指定按照哪一列进行合并,how 参数指定合并方式,inner 表示取交集。如果需要将结果复制给另一个 dataframe,可以使用 copy 函数:
```python
new_df = result.copy()
```
Python 筛选两个Excel的两列值分别相等的数据
可以使用 pandas 库来筛选两个 Excel 的两列值分别相等的数据。具体步骤如下:
1. 使用 pandas 的 read_excel 方法读取两个 Excel 文件,得到两个 DataFrame 对象;
```
import pandas as pd
df1 = pd.read_excel('excel1.xlsx')
df2 = pd.read_excel('excel2.xlsx')
```
2. 使用 merge 方法将两个 DataFrame 对象按照相同的列名进行合并,并设置参数 on 为相同的列名,参数 how 为 inner 表示取交集;
```
merged = pd.merge(df1, df2, on='column_name', how='inner')
```
3. 最后得到的 merged DataFrame 对象就是两个 Excel 中两列值分别相等的数据。
完整代码示例:
```
import pandas as pd
df1 = pd.read_excel('excel1.xlsx')
df2 = pd.read_excel('excel2.xlsx')
merged = pd.merge(df1, df2, on='column_name', how='inner')
print(merged)
```
其中,column_name 表示两个 Excel 中需要比较的列名。