python - 使用 python pandas 或任何其他更好的库在工作表中添加一列并在整列中应用此 excel 公式
问题描述
需要在现有的 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")。它会创建一个结果文件,但该文件已损坏且不包含任何内容。如果有人可以使用pandas实现它会更好,这样操作可以更快。
提前致谢
解决方案
IIUCnp.where
与shift
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
推荐阅读
- c# - 如何使用 XMLWriterClass 在 C# 中生成以下 Xml 代码?
- python - 二元分类问题的低准确率
- java - JavaFX 无法从资源文件夹加载图像
- python - 使用 imshow (OpenCV) 显示图像时出现问题
- flutter - java.lang.IllegalArgumentException:服务未注册:lp@f7269a6
- amazon-web-services - 如何使用 AWS Lambda 节点函数插入 mysql,然后将 JSON 返回到 websocket 客户端
- javascript - Mongoose Pre 和 Post 钩子:停止执行查询
- node.js - 如何在 nodejs express 应用程序初始化时插入数据
- sql - 编写查询以查找视频租赁组织收入最高的电影
- vb.net - 根据组合框中所选项目的索引从排序列表中检索值