如果我想把sheet3到sheet13里面的每一个sheet表的数据,看涨保证金为空看跌保证金不为空的行提取出来放到原本数据的右侧,创建新的列
时间: 2024-09-09 08:02:17 浏览: 53
如果你想在Python中使用pandas对Excel文件中每个工作表(Sheet)进行筛选,然后合并符合条件的数据行,并添加新列到原有数据集,可以按照以下步骤操作:
1. 首先,导入所需的库:
```python
import pandas as pd
```
2. 定义一个函数,该函数接受工作表名称作为参数,读取该工作表并筛选数据:
```python
def process_sheet(sheet_name):
sheet_df = pd.read_excel('your_file.xlsx', sheet_name=sheet_name)
# 筛选条件:看涨保证金为空(设为NaN或None),看跌保证金不为空
mask_trend_up = sheet_df['看涨保证金'].isna() # 假设'看涨保证金'列位于列名列表的第一个位置
mask_trend_down = ~sheet_df['看跌保证金'].isna()
# 合并条件
condition_mask = mask_trend_up & mask_trend_down
# 提取满足条件的行
selected_rows = sheet_df[condition_mask]
return selected_rows
```
3. 创建一个新的空DataFrame,用于存储结果:
```python
result_df = pd.DataFrame()
```
4. 循环遍历sheet3到sheet13,并将符合条件的数据追加到结果DataFrame:
```python
for i in range(3, 14): # 从3开始,因为题目提到sheet3
sheet_name = f'sheet{i}'
new_data = process_sheet(sheet_name)
result_df = result_df.append(new_data, ignore_index=True) # ignore_index确保行编号连续
```
5. 将筛选后的数据添加到原数据集的右侧,创建新列:
```python
# 假设原数据集名为original_df,且已经加载完毕
final_df = original_df.merge(result_df, how='left', left_index=True, right_index=True)
```
这里的`how='left'`表示左连接,保留所有左侧(即原数据)的行,并填充右侧(即筛选结果)缺失值。
6. 最后,保存最终结果:
```python
final_df.to_excel('new_file.xlsx', index=False)
```
阅读全文