如何用 python 中的数据框替换 excel 工作簿中的列
How to replace a column in a excel workbook with a dataframe in python
我从互联网上抓取了数据,经过一些操作后我获得了这样的数据框;
0 1 2 3
3 BAFRA 0 10000 0.114705
4 BAFRA 100001 300000 0.114705
1 BAFRA 300001 1000000 0.114705
0 BAFRA 1000001 10000000 0.114705
2 BAFRA 10000001 100000000 0.114705
5 BAFRA 100000000 100000001 0.114705
我想要的是获取第三列并将其替换为特定 sheet 中现有 excel 文件中的特定列和行。
我正在使用此代码;
with pd.ExcelWriter(...\Gas Settlement Aug20.xlsx",engine="openpyxl") as writer:
df[3].to_excel(writer, sheet_name='Unit Prices',header= False, index = False, startcol=12,startrow=24)
import openpyxl
wb = openpyxl.load_workbook(...\Gas Settlement Aug20.xlsx")
ws = wb['Unit Prices']
wb.save(...\Gas Settlement Aug20.xlsx")
但是它删除了所有信息,我尝试了模式 'a' 但这次它创建了一个新的 sheet。
有什么方法可以用新数据替换我的旧数据...
您似乎同时使用了两种不同的方法:pd.ExcelWriter 和 openpyxl。
只需按照您提供的示例,您就可以像这样使用 openpyxl 来更新您的文件:
import openpyxl
wb = openpyxl.load_workbook("...\Gas Settlement Aug20.xlsx")
ws = wb['Unit Prices']
startcol = 12
startrow = 24
for item in df[3]:
ws.cell(startrow, startcol).value = item
startrow +=1
wb.save(...\Gas Settlement Aug20.xlsx")
但我建议您不要使用这种形式的数字索引,因为它很容易产生错误,而且很难找到这些错误。根据大小,即使读取整个文件,更新和再次保存也会更安全,更容易跟踪。
我从互联网上抓取了数据,经过一些操作后我获得了这样的数据框;
0 1 2 3
3 BAFRA 0 10000 0.114705
4 BAFRA 100001 300000 0.114705
1 BAFRA 300001 1000000 0.114705
0 BAFRA 1000001 10000000 0.114705
2 BAFRA 10000001 100000000 0.114705
5 BAFRA 100000000 100000001 0.114705
我想要的是获取第三列并将其替换为特定 sheet 中现有 excel 文件中的特定列和行。 我正在使用此代码;
with pd.ExcelWriter(...\Gas Settlement Aug20.xlsx",engine="openpyxl") as writer:
df[3].to_excel(writer, sheet_name='Unit Prices',header= False, index = False, startcol=12,startrow=24)
import openpyxl
wb = openpyxl.load_workbook(...\Gas Settlement Aug20.xlsx")
ws = wb['Unit Prices']
wb.save(...\Gas Settlement Aug20.xlsx")
但是它删除了所有信息,我尝试了模式 'a' 但这次它创建了一个新的 sheet。 有什么方法可以用新数据替换我的旧数据...
您似乎同时使用了两种不同的方法:pd.ExcelWriter 和 openpyxl。 只需按照您提供的示例,您就可以像这样使用 openpyxl 来更新您的文件:
import openpyxl
wb = openpyxl.load_workbook("...\Gas Settlement Aug20.xlsx")
ws = wb['Unit Prices']
startcol = 12
startrow = 24
for item in df[3]:
ws.cell(startrow, startcol).value = item
startrow +=1
wb.save(...\Gas Settlement Aug20.xlsx")
但我建议您不要使用这种形式的数字索引,因为它很容易产生错误,而且很难找到这些错误。根据大小,即使读取整个文件,更新和再次保存也会更安全,更容易跟踪。