gpt4 book ai didi

python - 电源 BI : How to use Python with multiple tables in the Power Query Editor?

转载 作者:行者123 更新时间:2023-12-04 22:27:19 25 4
gpt4 key购买 nike

如何使用使用两个现有表作为输入的 Python 脚本创建新表?例如通过执行 left join使用 pandas merge ?

部分详情:

使用 Home > Edit queries您可以在 Transform > Run Python Script 下使用 Python .这会打开一个 Run Python Script您被告知的对话框 '#dataset' holds the input data for this script .如果您只需单击 OK,您就会发现相同的短语。并查看公式栏:
= Python.Execute("# 'dataset' holds the input data for this script#(lf)",[dataset=#"Changed Type"])
这也在Applied Steps下添加了一个新步骤。叫 Run Python script您可以通过单击右侧的齿轮符号来编辑 Python 脚本:

enter image description here

您如何更改该设置以引用多个表?

样本数据

这是两个可以存储为 CSV 文件并使用 Home > Get Data > Text/CSV 加载的表。

表1

Date,Value1
2108-10-12,1
2108-10-13,2
2108-10-14,3
2108-10-15,4
2108-10-16,5

表2
Date,Value2
2108-10-12,10
2108-10-13,11
2108-10-14,12
2108-10-15,13
2108-10-16,14

最佳答案

这与针对 R 脚本描述的挑战相同 here .该设置也适用于 Python。但是,我发现这种方法有一个缺点:它将新的联接表或计算表存储为先前表之一的编辑版本。以下建议将演示如何在不更改输入表的情况下生成全新的计算表(除了将 Date 列的数据类型从 Date 更改为 Text 因为 this 。)

简答:

Power Query editor , 按着这些次序:

  • 更改 Date columns 的数据类型在两列中到 Text .
  • 点击Enter Data .只需点击OK .
  • 激活新Table3并使用 Transform > Run Python Script .只需点击OK .
  • 激活公式栏并将其中的内容替换为 = Python.Execute("# Python:",[df1=Table1, df2=Table2]) .点击Enter .
  • 如果系统提示您这样做,请单击 Edit PermissionRun在下一步。
  • Applied Steps , 在名为 Run Python Script 的新步骤中,单击齿轮图标打开 Run Python Script编辑。
  • 插入下面的代码片段并单击 OK .

  • 代码:
    import pandas as pd
    df3 = pd.merge(df1, df2, how = 'left', on = ['Date'])
    df3['Value3'] = df1['Value1']*df2['Value2']

    旁边 df3 , 点击 Table ,就是这样:

    enter image description here

    详情:

    必须非常仔细地遵循上面的列表才能使事情正常进行。所以这里是所有肮脏的小细节:

    1. 使用 Get Data 将表作为 CSV 文件加载到 Power BI Desktop 中.

    2. 点击 Edit Queries .

    3. Table1 , 单击 Date column 旁边的符号,选择 Text然后点击 Replace Current
    enter image description here

    4. Table2 执行相同操作

    5. 关于 Home标签,点击 Enter Data
    6. 在出现的框中,除了单击 OK 之外什么都不做。 .

    enter image description here

    7. 这将插入一个名为 Table3 的空表。下 Queries ,而这正是我们想要的:

    enter image description here

    8. 转至 Transform选项卡并单击 Run Python Script :

    enter image description here

    9. 这将打开 Run Python Script编辑。您可以从这里开始编写脚本,但这会使接下来的步骤变得不必要地复杂。所以什么都不做,只需点击 OK :

    enter image description here

    10. 在公式栏中,您将设置公式 = Python.Execute("# 'dataset' holds the input data for this script#(lf)",[dataset=#"Changed Type"]) .请注意,您在名为 Run Python Script 的应用步骤下有了一个新步骤。 :

    enter image description here

    11. 上面的截图中有几个有趣的细节,但首先我们要分解函数 = Python.Execute("# 'dataset' holds the input data for this script#(lf)",[dataset=#"Changed Type"]) 的参数。 .

    零件 "# 'dataset'" holds the input data for this script#(lf)"只需插入您可以在 Python Script Editor 中看到的评论.所以这并不重要,但你也不能把它留空。我喜欢使用更短的东西,比如 "# Python:" .

    零件 [dataset=#"Changed Type"]是指向空的指针 Table3处于 Changed Type下的状态.因此,如果您在插入 Python 脚本之前所做的最后一件事不是更改数据类型,那么这部分看起来会有所不同。然后使用 dataset 在您的 python 脚本中提供该表。作为 Pandas 数据框。考虑到这一点,我们可以对公式进行一些非常有用的更改:

    12. 将公式栏更改为 = Python.Execute("# Python:",[df1=Table1, df2=Table2])并点击 Enter .这将使 Table1Table2可用于您的 Python 脚本作为名为 df1 的两个 Pandas 数据帧和 df2 , 分别。

    13. 单击 Run Python script 旁边的齿轮(还是花?)图标下 Applied Steps :

    enter image description here

    14. 插入以下代码段:

    代码:
    import pandas as pd
    df3 = pd.merge(df1, df2, how = 'left', on = ['Date'])
    df3['Value3'] = df1['Value1']*df2['Value2']

    这将加入 df1df2Date column ,并插入一个名为 Value3 的新计算列.不太花哨,但通过此设置,您可以使用 Power BI 世界中的数据和 Python 的强大功能做任何您想做的事情。

    enter image description here

    15. 点击 OK你会看到这个:

    enter image description here

    你会看到 df3列在输入数据框下 df1df2在蓝色广场。如果您在 Python 脚本中将任何其他数据框指定为计算步骤,它们也会在此处列出。要将其变成 Power BI 的可访问表,只需单击 Table如绿色箭头所示。

    16. 就是这样:

    enter image description here

    注意 Date column的数据类型设置为 Date默认情况下,但您可以将其更改为 Text如前所述。

    点击 Home > Close&Apply退出 Power Query Editor并返回到 Power BI Desktop 中一切开始的地方。

    关于python - 电源 BI : How to use Python with multiple tables in the Power Query Editor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51947441/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com