dataframe转为openpyxl
时间: 2024-03-03 21:45:01 浏览: 17
以下是将DataFrame转换为openpyxl工作簿的示例代码:
```python
import pandas as pd
from openpyxl import Workbook
# 创建一个DataFrame
data = {'Name': ['Tom', 'Nick', 'John'],
'Age': [28, 32, 25],
'City': ['New York', 'Paris', 'London']}
df = pd.DataFrame(data)
# 创建一个新的工作簿
wb = Workbook()
ws = wb.active
# 将DataFrame的数据写入工作簿的单元格中
for r in dataframe_to_rows(df, index=False, header=True):
ws.append(r)
# 保存工作簿
wb.save("df_to_openpyxl.xlsx")
```
这段代码首导入了pandas和openpyxl库。然后,创建了一个包含姓名、年龄和城市的DataFrame。接下来,创建了一个新的工作簿,并将DataFrame的数据写入工作簿的单元格中。最后,保存工作簿为df_to_openpyxl.xlsx文件。
相关问题
将openpyxl获取的sheet内容转为dataframe
要将 Openpyxl 获取的 sheet 内容转为 Pandas 的 DataFrame,可以使用 Pandas 的 `read_excel()` 函数。具体步骤如下:
1. 从 Openpyxl 中获取 sheet 内容并保存为二维列表
```python
import openpyxl
# 打开 Excel 文件并获取 sheet
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb['Sheet1']
# 将 sheet 内容保存为二维列表
data = []
for row in sheet.iter_rows(values_only=True):
data.append(list(row))
```
2. 将二维列表转为 Pandas 的 DataFrame
```python
import pandas as pd
# 将二维列表转为 DataFrame
df = pd.DataFrame(data[1:], columns=data[0])
```
其中,`data[0]` 为表头,`data[1:]` 为数据。如果 sheet 有表头,可以使用 `columns=data[0]` 将表头传递给 DataFrame 构造函数;如果没有表头,可以不传递 `columns` 参数,Pandas 会自动生成默认的列名。
将openpyxl读取一个EXCEL文件获取的sheet内容转为dataframe再使用pandas另存为新的文件发现新文件大小比原文件小
这种情况可能是由于以下原因导致的:
1. 文件格式不同:原文件可能是.xlsx格式,而新文件可能是.csv格式,后者的文件大小通常比前者小。
2. 数据类型不同:在将数据从Excel文件转换为DataFrame时,可能会出现数据类型转换的情况。例如,原文件中的某些列是数字类型,但是在转换为DataFrame时被转换为了字符串类型。这可能会导致新文件大小的变化。
3. 空值处理:在将数据从Excel文件转换为DataFrame时,可能会对空值进行处理。例如,将空值替换为0或其他值。这可能会导致新文件大小的变化。
为了确定原因,可以尝试将新文件转换为与原文件相同的格式,并检查数据类型和空值处理。如果这些都相同,那么文件大小的变化可能是由于数据量减少或其他原因导致的。