从动态数据中的一列获取不同值的列表,其中另一列等于特定文本?

问题描述 投票:0回答:1

我每天早上使用 SQL 和 Python 自动用数据填充 Excel 模板文件。在 Excel 文件中,以下表为例,我需要从

Code
列获取不同的代码列表,但前提是
New
列的值为
Y
。这是每天早上发布的自动报告,因此我无法进行任何手动数据操作。

现有数据样本:

| New | Code |
| --- | ---- |
| N   | RTB  |
| N   | RTB  |
| Y   | RTB  |
| N   | SCR  |
| N   | SCR  |
| Y   | SCR  |
| Y   | SCR  |
| N   | SLD  |
| N   | SLD  |
| N   | SLD  |
| N   | RTS  |
| N   | RTS  |
| Y   | RTS  |
| Y   | RTS  |
| N   | CC   |
| N   | CC   |

上表列出了 5 个代码,但在

Y
列中只有 3 个代码为
New
。我想要以下输出:


| Code |
| ---- |
| RTB  |
| SCR  |
| RTS  |  

创建一个数据透视表并按

New
列出,然后按
Code
创建正是我所需要的,但正如我上面所说,这必须完全自动化,因此数据透视表将无法工作。我只是想不出正确的公式。

这个公式让我很接近,但是使用上面的例子,它会列出所有五个代码:

=IFERROR(INDEX(DATA!$B$2:$B$9999, MATCH(0, INDEX(COUNTIF($A$1:A1, DATA!$B$2:$B$9999),0,0), 0))), "")
我也不知道如何告诉它按
New
列进行过滤。

如果有更简单的方法可以用 Python 或 SQL 来完成此操作,那么我也很擅长。我正在从 SQL 查询创建数据帧并将它们写入 Excel 以获得上面提到的动态数据。

谢谢!

python sql-server excel-2019
1个回答
0
投票

Pandas 很乐意为您过滤和区分这些内容。

>>> import pandas as pd
>>> df = pd.DataFrame({'New': list('NNYNNYY'), 'Code': 'RTB RTB RTB SCR SCR SCR RTB'.split()})
>>> list(df[df.New == 'Y'].Code.unique())
['RTB', 'SCR']

随意使用类似的方法 .to_csv().to_sql() 将这些报告结果发送到您需要的地方。

© www.soinside.com 2019 - 2024. All rights reserved.