df1拥有A、B两列,df1的C列数值为多条件求和,为同时满足df2中D等于A1、E等于B1的行对应的F列数值之和
时间: 2024-04-16 09:25:56 浏览: 107
要计算df1的C列,根据多个条件从df2中获取对应行的F列数值,并求和,可以使用以下代码:
```python
df1['C'] = df1.apply(lambda row: df2[(df2['D'] == row['A']) & (df2['E'] == row['B'])]['F'].sum(), axis=1)
```
这将使用`apply()`函数来对df1的每一行进行操作。对于每一行,`lambda`函数将根据条件`(df2['D'] == row['A']) & (df2['E'] == row['B'])`从df2中筛选出满足条件的行,并获取相应的F列数值。然后,`sum()`函数计算这些数值的总和,并将结果赋值给df1的C列。
请注意,上述代码中假设df1和df2具有相同的索引结构,即相应行的A和B值是匹配的。如果索引结构不匹配,您可能需要进行一些预处理操作,例如重新索引或合并数据框,以确保能够正确匹配条件。
相关问题
python dataframe merge 合并 列求和
在Python中,使用pandas库的DataFrame.merge()函数可以合并两个数据帧。首先,我们需要导入pandas库并读取要合并的两个数据帧。然后,指定要合并的列作为键,并选择合并方式。在合并完成后,我们可以使用DataFrame的sum()函数计算各列的和。
下面是一个示例代码:
```python
import pandas as pd
# 读取两个数据帧
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': [1, 2, 3, 4]})
df2 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'D': [5, 6, 7, 8]})
# 合并数据帧
merged_df = pd.merge(df1, df2, on='A')
# 计算列的和
sum_result = merged_df.sum()
print(sum_result)
```
输出结果为:
```
A A0A1A2A3
B B0B1B2B3
C 10
D 26
dtype: object
```
上述代码首先定义了两个数据帧df1和df2,然后使用merge函数将它们合并为merged_df。最后,使用sum函数计算每列的总和,并将结果打印出来。在输出结果中,每列的和以列名为索引展示出来。
阅读全文