python 根据execl表某列单元格数据匹配查找另外一个execl表的行数据,并对该execl表的相同数值进行合计,输出新表
时间: 2024-05-16 15:18:35 浏览: 18
可以使用 Python 中的 Pandas 库来实现这个功能。具体步骤如下:
1. 读取第一个 Excel 表格中的数据,使用 Pandas 的 read_excel 函数,将数据存储到一个 DataFrame 中。
```python
import pandas as pd
df1 = pd.read_excel('表格1.xlsx')
```
2. 读取第二个 Excel 表格中的数据,同样使用 Pandas 的 read_excel 函数,将数据存储到一个 DataFrame 中。
```python
df2 = pd.read_excel('表格2.xlsx')
```
3. 对第一个 DataFrame 进行处理,只保留需要的列。
```python
df1 = df1[['列名1', '列名2']]
```
4. 将第二个 DataFrame 按照需要匹配的列进行排序,方便后续的查找。
```python
df2 = df2.sort_values(by='需要匹配的列')
```
5. 创建一个空的 DataFrame,用于存储匹配结果。
```python
result = pd.DataFrame(columns=['列名1', '列名2', '合计'])
```
6. 遍历第一个 DataFrame 中的每一行,对于每一行,在第二个 DataFrame 中查找匹配的行。
```python
for index, row in df1.iterrows():
value_to_match = row['需要匹配的列']
matched_rows = df2[df2['需要匹配的列'] == value_to_match]
```
7. 对于匹配到的多行数据,将它们的相同列进行合计。
```python
total = matched_rows['需要合计的列'].sum()
```
8. 将匹配结果添加到结果 DataFrame 中。
```python
result = result.append({'列名1': row['列名1'], '列名2': row['列名2'], '合计': total}, ignore_index=True)
```
9. 最后,将结果 DataFrame 输出到新的 Excel 表格中。
```python
result.to_excel('结果.xlsx', index=False)
```
完整的代码如下:
```python
import pandas as pd
df1 = pd.read_excel('表格1.xlsx')
df2 = pd.read_excel('表格2.xlsx')
df1 = df1[['列名1', '列名2']]
df2 = df2.sort_values(by='需要匹配的列')
result = pd.DataFrame(columns=['列名1', '列名2', '合计'])
for index, row in df1.iterrows():
value_to_match = row['需要匹配的列']
matched_rows = df2[df2['需要匹配的列'] == value_to_match]
total = matched_rows['需要合计的列'].sum()
result = result.append({'列名1': row['列名1'], '列名2': row['列名2'], '合计': total}, ignore_index=True)
result.to_excel('结果.xlsx', index=False)
```