python - 用 Python 编写的 excel 增量公式

标签 python pandas xlsxwriter

下面的脚本读取多个 csv 文件,合并一些文件并将它们写入两个不同工作表中的 Excel 文件。

它还会将此公式 (=IF(COUNTIFS(Meds!A:A,B2)>0,1,0)) 添加到 Meds 列中每个单元格的最后一列,但是我需要它递增,因此第二个单元格将是 =IF(COUNTIFS(Meds!A:A,B3)>0,1,0) 等等。我不知道如何编写一个循环来执行此操作。我看到了这个post但我在使用 openpyxl 时遇到问题,所以想避免使用该库。

import pandas as pd

# read in multiple csv files 
df1 = pd.read_csv("file1.csv", encoding = 'utf-8')
df2 = pd.read_csv("file2.csv", encoding = 'utf-8')
meds = pd.read_csv("meds.csv", encoding = 'utf-8')

# create a list of dataframes (excluding meds)
dfs = [df1, df2]

# merge dataframes in list
df_final = reduce(lambda left,right: pd.merge(left,right,on='RecordKey'), dfs)

# add empty column
df_final["Meds"] = ""

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('final.xlsx', engine='xlsxwriter')

# add formula to Meds
df_final['Meds'] = '=IF(COUNTIFS(Sheet2!A:A,E2)>0,1,0)'

# write to csv
df_final.to_excel(writer, sheet_name='Combined')
meds.to_excel(writer, sheet_name='Meds')

# Close the Pandas Excel writer and output the Excel file.
writer.save()

最佳答案

您可以使用循环和字符串格式来创建可插入到 df 中的公式列表。

length_of_df = len(df)
list_of_formulas = []

for i in range(2,length_of_df+2):
    formula = '=IF(COUNTIFS(Sheet2!A:A,E{0}>0,1,0)'.format(i)
    list_of_formulas.append(formula)

# print(list_of_formulas)

# ['=IF(COUNTIFS(Sheet2!A:A,E2>0,1,0)',
# '=IF(COUNTIFS(Sheet2!A:A,E3>0,1,0)',   
# '=IF(COUNTIFS(Sheet2!A:A,E4>0,1,0)',    
# '=IF(COUNTIFS(Sheet2!A:A,E5>0,1,0)', 
# '=IF(COUNTIFS(Sheet2!A:A,E6>0,1,0)']

# Assign list of formulas to df
df.loc[:, "Meds"] = list_of_formulas

关于python - 用 Python 编写的 excel 增量公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53509647/

相关文章:

python - 从 Python 中的 int 中提取位域

Python 分组条形图。计数不起作用

python - Pandas Concat 添加空单元格/列

python - 仅打印/绘制 CSV 文件中某些特定站点的特定列

python - 使用 xlsxwriter 在 x 轴上的分类值

excel - 将 worksheet.hide_gridlines(2) 设置为特定范围的单元格

python - 使用单个命令从字典列表中获取某个键的所有值

python - 使用 "try"进行列表循环操作

excel - 如何在 Excel 或 Google 表格中组合 if 和 cycle?

python - 我应该使用抽象类吗?