如何解决使用 xlwings 时丢失数据
我正在尝试使用 xlwings 从 excel 调用 python 代码。但是当我在excel中运行代码时,所有输出数据都没有出现,只有第一列和最后一列,其他列显示为空 我在jupyter中运行代码时没有出现这个问题,不知道问题出在哪里!
这是我的代码:
import xlwings as xw
import pandas as pd
import numpy as np
from datetime import datetime,date
from openpyxl import load_workbook
@xw.sub
def main():
wb = xw.Book.caller()
sht = wb.sheets['view_plan_gamme']
# import the data:
n=6
df_last_month = pd.read_excel(r'C:\myproject\data\input.xlsx',sheet_name='Plan_gamme_m1',skiprows=[*range(n)])
df_current_month=pd.read_excel(r'C:\myproject\data\input.xlsx',sheet_name='Plan_gamme_m',skiprows=[*range(n)])
# Data cleaning:
df_last_month=df_last_month.drop_duplicates()
df_current_month=df_current_month.drop_duplicates()
#Select columns:
df_last_month=df_last_month[["Vehicle project number","Vehicle status","Project Naming","Vehicle
project description","Vehicle family","CF","VPC","CO","MA"]]
df_current_month = df_current_month[["Vehicle project number","Project
Naming","Vehicle project description","MA"]]
# convert Datetime columns to string:
from pandas.api.types import is_datetime64_any_dtype
for col in df_current_month.columns:
if is_datetime64_any_dtype(df_current_month[col]):
df_current_month[col] = df_current_month[col].dt.strftime('%Y-%m-%d')
for col in df_last_month.columns:
if is_datetime64_any_dtype(df_last_month[col]):
df_last_month[col] = df_last_month[col].dt.strftime('%Y-%m-%d')
# New/Modify/deleted projects
# put the first column as index:
df_last_month = df_last_month.set_index('Vehicle project number')
df_current_month = df_current_month.set_index('Vehicle project number')
# concatenate dataframe
df3 = pd.concat([df_last_month,df_current_month],sort=False)
df3a = df3.stack().groupby(level=[0,1]).unique().unstack(1).copy()
df3a.loc[~df3a.index.isin(df_last_month.index),'update_project'] = 'new'
df3a.loc[~df3a.index.isin(df_current_month.index),'update_project'] = 'deleted'
idx = df3.stack().groupby(level=[0,1]).nunique() # get modified cells.
df3a.loc[idx.mask(idx <= 1).dropna().index.get_level_values(0),'update_project'] = 'modified'
df3a['update_project'] = df3a['update_project'].fillna('same')
# Export the results
sht.range('A7').value = df3a
sht.range('A7:J2000').options(pd.DataFrame).value
我在excel中的输出:
非常感谢任何帮助和建议!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。