这是与R脚本相同的挑战
此处所描述的。该设置也适用于Python。然而,我发现该方法有一个缺点:它将新的连接或计算表存储为先前表格的编辑版本之一。以下建议将演示如何生成完全新的计算表,而不更改输入表(除了由于
this而将日期列的数据类型从
日期
更改为
文本
)。
简短回答:
在
Power Query Editor
中,请按照以下步骤进行:
将两个日期列的数据类型更改为。
点击输入数据
,只点击确定
。
激活新的Table3
并使用Transform > Run Python Script
。只点击确定
。
激活公式栏,并用= Python.Execute("# Python:",[df1=Table1, df2=Table2])
替换其中的内容。点击Enter
。
如果提示这样做,请单击编辑权限
和下一步中的运行
。
在应用步骤
下,在名为Run Python Script
的新步骤中,单击齿轮图标以打开Run Python Script
编辑器。
插入下面的代码片段,然后单击确定
。
代码:
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](https://istack.dev59.com/WYtjf.webp)
细节:
为了使事情顺利进行,必须非常仔细地遵循上面的列表。以下是所有肮脏的小细节:
1. 使用获取数据
在Power BI Desktop中将表格作为CSV文件加载。
2. 点击编辑查询
。
3. 在Table1
中,点击Date列
旁边的符号,选择文本
并点击替换当前
。
![enter image description here](https://istack.dev59.com/As7ps.webp)
4. 对于Table2
执行同样的操作。
5. 在主页
选项卡中,点击输入数据
。
6. 在弹出的框中,除了点击确定
之外,不要进行其他操作。
![enter image description here](https://istack.dev59.com/P7PZy.webp)
7. 这将在Queries
下插入一个名为Table3
的空表,这正是我们想要的:
![enter image description here](https://istack.dev59.com/WCoTd.webp)
8. 进入Transform
选项卡,点击Run Python Script
:
![enter image description here](https://istack.dev59.com/XRdFE.webp)
9. 这将打开运行Python脚本
编辑器。你可以在这里开始编写脚本,但这会使接下来的步骤变得不必要地复杂。因此,除了单击确定
之外,不要做任何事情:
![enter image description here](https://istack.dev59.com/kpKKB.webp)
10. 在公式栏中,您将看到以下公式= Python.Execute("# 'dataset' holds the input data for this script#(lf)",[dataset=#"Changed Type"])
。请注意,在应用的步骤下面,您有一个名为Run Python Script
的新步骤:
![enter image description here](https://istack.dev59.com/iYVgQ.webp)
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"]
部分是指向Changed Type
状态下空的Table3
的指针。因此,如果在插入Python脚本之前做的最后一件事情不是更改数据类型,这部分将会有所不同。然后,在你的python脚本中使用dataset
作为pandas数据帧来使表格可用。有了这个想法,我们可以对公式进行一些非常有用的更改:
12. 将公式栏更改为= Python.Execute("# Python:",[df1=Table1, df2=Table2])
,然后按Enter
。这将使Table1
和Table2
作为两个名为df1
和df2
的pandas数据帧在你的Python脚本中可用。
13. 点击Applied Steps
下Run Python script
旁边的齿轮(或是花朵?)图标:
![enter image description here](https://istack.dev59.com/iF0En.webp)
14. 插入以下片段:
代码:
import pandas as pd
df3 = pd.merge(df1, df2, how = 'left', on = ['Date'])
df3['Value3'] = df1['Value1']*df2['Value2']
这将在“Date column”上连接“df1”和“df2”,并插入一个名为“Value3”的新计算列。虽然不太花哨,但使用此设置,您可以利用Power BI和Python的强大功能对数据进行任何操作。
![enter image description here](https://istack.dev59.com/8VE4d.webp)
15. 点击OK
,你将看到这个:
![enter image description here](https://istack.dev59.com/EcRtI.webp)
在蓝色方框中,您将看到df3
列在输入数据框df1
和df2
下面。如果您在Python脚本的计算步骤中分配了其他数据帧,它们也会在此处列出。为了将其转换为Power BI可访问的表格,只需单击绿色箭头所示的Table
。
16. 就是这样:
![enter image description here](https://istack.dev59.com/oTrLm.webp)
请注意,{{Date列}}的数据类型默认设置为{{Date}},但您可以像之前解释的那样将其更改为{{Text}}。
单击{{Home > Close&Apply}}退出{{Power Query Editor}}并返回到{{Power BI Desktop}}中开始的位置。