有没有一种方法可以将这些公式组合到一个单元格中?

时间:2019-08-30 02:35:06

标签: python excel-formula

我正在检查电子表格中某列中的特定模式。我有一个公式来检查模式,该模式将为“已标记”或“正常”,然后再另一个公式来检查是否存在一个Flag。 我正在使用2个公式,因为电子表格将使用Python进行提取和编辑,这似乎是目前最简单的方法。我也在研究可以使用Python来更有效地完成此操作的方法。

我试图匹配A,B或C列中五个0的模式。检查哪个列都没有关系。

X

在D列中,我有以下公式可以找到模式:

A   B   C   D     E
379 400 51  fine  Flagged
404 460 18  fine    
379 365 65  fine    
0   0   0   fine    
0   0   0   Flag    
0   0   0   fine    
0   0   0   fine    
0   0   0   fine    
399 480 94  fine    
390 420 55  fine    
399 435 121 fine    

然后使用此公式检查D中是否有任何标记:

=IF((AND(A5=0, A6=0, A7=0, A8=0, A9=0 )), "Flag", "Fine")

所以Python只能检查1个单元格(我的python技能还在开发中)

如果我可以将一个公式粘贴到一个单元格中,以给出电子表格的Flag或Fine结果,那将是完美的。 谢谢

编辑/答案4.9.19 最后,我找不到在单个单元格中使用的公式。解决方法是使用python遍历单元格,并根据需要粘贴公式:

=IFERROR(IF(MATCH("Flag",W:W,0), "Flagged"), "Fine")

1 个答案:

答案 0 :(得分:0)

阅读熊猫电子表格。如果要解析很多行,最好使用read_csv而不是read_excel,因为csv文件会小于xlxs。

df = pd.read_csv('your_filename.csv', header = 0)

然后使用np.where()方法将所需的标签放置在D列中。

df['D'] = np.where((df['A'] == 0) & (df['B'] == 0) & (df['C'] == 0), ['Flag'], ['Fine'])

要获取列F,您必须引用列D,对吗?为此,请使用loc

df.loc[df['D'] == 'Flag', 'F'] = 'Flagged'

如果您的列'Flagged'的值等于F,我不确定在D上标记'Fine'的值是哪个?在上面的示例中,您将列F的列'Flagged'的值为D标记为'Fine'。在这种情况下,只需将上述条件中的值更改为所需的值即可。