Python 操作 Excel

Python 操作 Excel

flyfish

在Python中索引是从0开始的

各种读取方式

import pandas as pd
import numpy as np

# 生成10行10列的数据
data = np.random.rand(10, 10)  # 使用随机数填充数据
df = pd.DataFrame(data, columns=[f'Col{i+1}' for i in range(10)])

# 将数据写入Excel文件
excel_file = 'output.xlsx'
df.to_excel(excel_file, index=False)

# 读取整个Excel文件
df_read = pd.read_excel(excel_file)

# 1. 读取前5行
first_five_rows = df_read.head(5)
print("First 5 rows:")
print(first_five_rows)

# 2. 读取后5行
last_five_rows = df_read.tail(5)
print("\nLast 5 rows:")
print(last_five_rows)

# 3. 读取前5列
first_five_columns = df_read.iloc[:, :5]
print("\nFirst 5 columns:")
print(first_five_columns)

# 4. 读取后5列
last_five_columns = df_read.iloc[:, -5:]
print("\nLast 5 columns:")
print(last_five_columns)

# 5. 只读取从第2行到第5行(注意:在Python中索引是从0开始的)
rows_2_to_5 = df_read.iloc[1:5]  # 1是第2行,5是不包括第6行
print("\nRows 2 to 5:")
print(rows_2_to_5)

# 6. 只读取从第2列到第5列
columns_2_to_5 = df_read.iloc[:, 1:5]  # 1是第2列,5是不包括第6列
print("\nColumns 2 to 5:")
print(columns_2_to_5)

# 7. 读取从第3行到第6行,从第4列到第7列的数据
subset_data = df_read.iloc[2:6, 3:7]  # 2是第3行,6是不包括第7行;3是第4列,7是不包括第8列
print("\nSubset from row 3 to 6 and column 4 to 7:")
print(subset_data)

各种操作方式

假如一个Excel文件内容如下

工作表1
   col1  col2  col3
0     1     2     3
工作表2
   col1  col2  col3
0     4     5     6

操作如下

import pandas as pd
import sys
import os

#-------------------------------------------------------------------------
#路径的参考
# 获取脚本文件的绝对路径
script_path = sys.argv[0]
print(f"Script Path (from sys.argv[0]): {script_path}")

# 如果是相对路径,则转换为绝对路径
if not os.path.isabs(script_path):
    script_path = os.path.abspath(script_path)
print(f"Absolute Script Path: {script_path}")

# 获取脚本所在目录
script_directory = os.path.dirname(script_path)
print(f"Script Directory: {script_directory}")
#-------------------------------------------------------------------------

# 读取Excel文件中的所有sheet
xls = pd.ExcelFile('example.xlsx')

# 获取所有的sheet名称
sheet_names = xls.sheet_names
print(sheet_names)

# 初始化一个空的DataFrame来存储结果
combined_df = pd.DataFrame()

# 遍历每一个sheet,并将其添加到combined_df中
for sheet in sheet_names:
    df = pd.read_excel(xls, sheet_name=sheet)
    combined_df = pd.concat([combined_df, df], ignore_index=True)

# 查看合并后的DataFrame
print(combined_df)

# 如果需要,可以将合并后的DataFrame保存为新的Excel文件
combined_df.to_excel('combined_output.xlsx', index=False)


#-------------------------------------------------------------------------
#选择特定的sheet读取
df = pd.read_excel('example.xlsx', sheet_name=sheet_names[0])
print(df)
df = pd.read_excel('example.xlsx', sheet_name=sheet_names[1])
print(df)
#-------------------------------------------------------------------------
#修改指定单元格的数据
# 读取Excel文件
df = pd.read_excel('modify.xlsx', sheet_name=sheet_names[0])

# 更改特定位置的值,不存在则新增
df.at[0, 'ColumnA'] = 123
df.at[0, 'col1'] = 456

# 将更改后的DataFrame保存回Excel
df.to_excel('modified_example.xlsx', index=False)
['工作表1', '工作表2']
   col1  col2  col3
0     1     2     3
1     4     5     6
   col1  col2  col3
0     1     2     3
   col1  col2  col3
0     4     5     6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西笑生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值