微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 xlwings 时丢失数据

如何解决使用 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中的输出

enter image description here

非常感谢任何帮助和建议!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?