繁体   English   中英

在工作表中添加一列,然后使用python pandas或任何其他更好的库在整个列中应用此excel公式

[英]Add a column to sheet and apply this excel formula in whole column using python pandas or any other better library

需要在现有的excel文件表中添加一列,并使用python panda或任何其他更好的库将此excel公式应用于整列中,并将其写入到现有的excel文件中。 Excel公式为:

=IF(AND(J2="SC",J3="EUS),K3-K2,"")

要么

=IF(AND(currentRowOfCol J="SC",NextRowOfCol J="EUS),NextRowOfCol K-CurrentRowOfCol K,"")

样品:

index J K
  1   2 3
  2   2 5
  3   7 2

结果应为:

index J     K   L
  1   SC    4   1  
  2   EUS   5  NULL
  3   SC    2  NULL

试过这段代码:

import openpyxl

wb = openpyxl.load_workbook('C:/Users/Sameer/Desktop/abc.xlsx')
Sheet = wb['Data Owner Group History']

for cellObj in list(Sheet.columns)[12]:
#    print(n)
    j1=('J'+str(cellObj.row))
    j2 = ('J'+str((cellObj.row)+1))
    y=('K'+(str((cellObj.row)+1)))
    k=('K2'+(str(cellObj.row)))
    n='IF(AND({0}="SC",{1}="EUS-CUC-DISPATCH (Ceryx/Amdocs group)"),{2}- 
    {3},"")'.format(j1,j2,y,k)
    cellObj.value = n
    wb.save("C:/Users/Sameer/Desktop/result.xlsx")
print("done")

但是,它卡在执行中,并且从不执​​行最后一个命令print(“ done”)。 它会创建一个结果文件,但已损坏并且不包含任何内容。 如果有人可以使用熊猫实现它会更好,这样操作就可以更快。

提前致谢

IIUC np.whereshift

np.where((df.J.eq('SC'))&(df.J.shift(-1).eq('EUS')),df.K.shift(-1)-df.K,None)
Out[7]: array([1.0, None, None], dtype=object)

df['L']=np.where((df.J.eq('SC'))&(df.J.shift(-1).eq('EUS')),df.K.shift(-1)-df.K,None)
df
Out[9]: 
   index    J  K     L
0      1   SC  4     1
1      2  EUS  5  None
2      3   SC  2  None

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM