python读取佛山的excel表格内所有sheet,指定‘区’,‘省’列数据不删除,其它列获取最后一行第一列之后的数据,若数值低于90则删除这列数据
时间: 2024-04-30 07:23:44 浏览: 94
下面是实现该功能的代码:
```python
import pandas as pd
# 读取Excel文件
file_path = '佛山.xlsx'
df_dict = pd.read_excel(file_path, sheet_name=None)
# 定义要保留的列
keep_cols = ['区', '省']
# 遍历每个sheet
for sheet_name, df in df_dict.items():
# 获取最后一行第一列之后的数据
last_row = df.iloc[-1, 1:]
# 找出数值低于90的列
drop_cols = [col for col in last_row.index if pd.isna(last_row[col]) or last_row[col] < 90]
# 删除需要删除的列
df.drop(drop_cols, axis=1, inplace=True)
# 保留指定列
df = df[keep_cols + list(df.columns[len(keep_cols):])]
# 将修改后的数据保存回字典
df_dict[sheet_name] = df
# 将修改后的数据保存回Excel文件
with pd.ExcelWriter(file_path) as writer:
for sheet_name, df in df_dict.items():
df.to_excel(writer, sheet_name=sheet_name, index=False)
```
解释一下代码:
1. 首先使用`pd.read_excel()`读取Excel文件,将每个sheet分别存储在一个字典中,字典的key为sheet名,value为对应的DataFrame对象。
2. 定义要保留的列,这里为了方便直接写死了,实际使用时可以根据具体情况进行修改。
3. 遍历每个sheet,对每个sheet进行如下操作:
- 获取最后一行第一列之后的数据,这里使用`df.iloc[-1, 1:]`,`iloc`方法可以根据行列的位置来选取数据。
- 找出数值低于90的列,这里使用列表推导式和`pd.isna()`函数来实现。
- 删除需要删除的列,这里使用`df.drop()`方法,`axis=1`表示删除列,`inplace=True`表示原地修改。
- 保留指定列,这里使用`df[keep_cols + list(df.columns[len(keep_cols):])]`,将保留的列和其它列拼接起来,保留的列放在前面。
- 将修改后的数据保存回字典。
4. 最后将修改后的数据保存回Excel文件,这里使用`pd.ExcelWriter()`和`to_excel()`方法来实现,`with`语句可以自动关闭文件句柄。
阅读全文