对两个dataframe中的两个列进行比较,并增加新的列保存比较结果
时间: 2024-03-08 13:50:49 浏览: 87
可以使用pandas库中的apply函数来实现。假设你的两个dataframe分别为df1和df2,你需要比较的两个列分别为col1和col2,比较结果保存在新的列col3中,代码如下:
```
import pandas as pd
df1 = pd.DataFrame({'col1': [1, 2, 3], 'col2': ['a', 'b', 'c']})
df2 = pd.DataFrame({'col1': [1, 2, 4], 'col2': ['a', 'b', 'd']})
def compare_rows(row1, row2):
if row1['col1'] == row2['col1'] and row1['col2'] == row2['col2']:
return True
else:
return False
df1['col3'] = df1.apply(lambda row: compare_rows(row, df2.loc[df2.index[0]]), axis=1)
print(df1)
```
这里定义了一个compare_rows函数,用于比较两行数据。然后使用apply函数将该函数应用到df1的每一行上,并将比较结果保存在新的列col3中。需要注意的是,这里假设df2只有一行数据,如果有多行数据需要进行循环遍历比较。
相关问题
将两个dataframe的两个列进行比较,并新增加一个列保存结果,结果相同的标记为1,不同的标记为0
好的,可以使用 Pandas 库来实现这个功能。假设我们要比较的两个 DataFrame 分别为 df1 和 df2,要比较的两列分别为 col1 和 col2,那么可以按照以下步骤进行操作:
1. 首先将两个 DataFrame 按照 col1 列进行合并,使用 merge 函数实现:
``` python
merged_df = pd.merge(df1, df2, on='col1')
```
2. 然后比较 col2_x 和 col2_y 两列是否相同,生成一个新列 result,使用 apply 函数和 lambda 表达式实现:
``` python
merged_df['result'] = merged_df.apply(lambda row: 1 if row['col2_x'] == row['col2_y'] else 0, axis=1)
```
3. 最后可以将结果保存到新的 DataFrame 中,只保留需要的列:
``` python
new_df = merged_df[['col1', 'result']]
```
完整代码如下所示:
``` python
import pandas as pd
# 创建示例数据
df1 = pd.DataFrame({'col1': ['a', 'b', 'c'], 'col2': [1, 2, 3]})
df2 = pd.DataFrame({'col1': ['a', 'c', 'd'], 'col2': [1, 4, 5]})
# 将两个 DataFrame 按照 col1 列进行合并
merged_df = pd.merge(df1, df2, on='col1')
# 比较 col2_x 和 col2_y 两列是否相同,生成一个新列 result
merged_df['result'] = merged_df.apply(lambda row: 1 if row['col2_x'] == row['col2_y'] else 0, axis=1)
# 将结果保存到新的 DataFrame 中,只保留需要的列
new_df = merged_df[['col1', 'result']]
print(new_df)
```
输出结果为:
```
col1 result
0 a 1
1 c 0
```
计算dataframe两个列的比值并将结果保存在另一个dataframe中的python代码
可以使用 pandas 库中的 DataFrame 进行计算,代码如下:
```python
import pandas as pd
# 创建 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 计算两个列的比值,结果保存在另一个 DataFrame 中
df_ratio = pd.DataFrame({'C': df['A'] / df['B']})
# 显示结果
print(df_ratio)
```
输出结果如下:
```
C
0 0.250000
1 0.400000
2 0.500000
```
阅读全文