如何使用Python脚本创建一个新表,该脚本使用两个现有表作为输入?例如,通过执行left join
使用pandas合并?
一些细节:
使用Home > Edit queries
你可以使用Python Transform > Run Python Script
.这将打开一个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脚本:
如何更改该设置以引用多个表?
样本数据
这是两个表,可以存储为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
Run Code Online (Sandbox Code Playgroud)
表2
Date,Value2
2108-10-12,10
2108-10-13,11
2108-10-14,12
2108-10-15,13
2108-10-16,14
Run Code Online (Sandbox Code Playgroud)
这与此处针对R脚本描述的挑战相同.该设置也适用于Python.但是,我发现approcah有一个缺点:它将新的连接或计算表存储为以前表之一的编辑版本.下面的建议将演示如何制作一个完全新的计算表,而不改变输入表(除了更改日期列的数据类型从Date
到Text
因为这个.)
简短回答:
在Power Query editor
,请按照下列步骤操作:
将Date columns
两列中的数据类型更改为Text
.
点击Enter Data
.只需点击OK
.
激活新的Table3
并使用Transform > Run Python Script
.只需点击OK
.
激活公式栏并替换其中的内容= Python.Execute("# Python:",[df1=Table1, df2=Table2])
.点击Enter
.
如果系统提示您这样做,请单击Edit Permission
并Run
执行下一步.
在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']
Run Code Online (Sandbox Code Playgroud)
df3
单击旁边的Table
,就是这样:
细节:
必须非常小心地遵循上面的列表才能使事情顺利进行.所以这里是所有肮脏的小细节:
1.使用在Power BI Desktop中将表格作为CSV文件加载Get Data
.
2.单击 Edit Queries
.
3.在Table1
,单击旁边的符号Date column
,选择Text
并单击Replace Current
4.用同样的方法Table2
5.在Home
选项卡上,单击Enter Data
6.在出现的框中,除了单击之外别无其他操作OK
.
7.这将插入一个名为Table3
under 的空表Queries
,这正是我们想要的:
8.转到Transform
选项卡,然后单击Run Python Script
:
9.这将打开Run Python Script
编辑器.你可以在这里开始编写脚本,但这会在接下来的步骤中使事情变得不必要地复杂化.所以什么都不做,但点击OK
:
10.在公式栏中,您将看到公式= Python.Execute("# 'dataset' holds the input data for this script#(lf)",[dataset=#"Changed Type"])
.请注意,您在Applied Steps下面有一个新步骤Run Python Script
:
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
pandas数据框在python脚本中提供该表.考虑到这一点,我们可以对公式做出非常有用的修改:
12.将公式栏更改为= Python.Execute("# Python:",[df1=Table1, df2=Table2])
并点击Enter
.这将使Table1
和Table2
可供您Python脚本为一个名为两只大熊猫dataframes df1
和df2
分别.
13.点击齿轮(或者是花?)旁边的图标Run Python script
下Applied Steps
:
14.插入以下代码段:
码:
import pandas as pd
df3 = pd.merge(df1, df2, how = 'left', on = ['Date'])
df3['Value3'] = df1['Value1']*df2['Value2']
Run Code Online (Sandbox Code Playgroud)
这将加入df1
和df2
上Date column
,并插入一个新的名为计算列Value3
.不是太花哨,但通过这种设置,您可以在Power BI世界中使用Python的强大功能执行任何您想要的任何操作.
15.点击OK
,你会看到这个:
您将看到df3
输入数据框下方df1
和df2
蓝色方块中列出的内容.如果您已在Python脚本中将任何其他数据帧指定为计算步骤,则它们也将在此处列出.要将其转换为Power BI的可访问表,只需单击Table
绿色箭头所示.
16.就是这样:
请注意,默认情况下,数据类型Date column
设置为Date
,但您可以将其更改Text
为如前所述.
单击Home > Close&Apply
退出Power Query Editor
并返回到Power BI Desktop中的所有位置.
您可以在高级编辑器中创建一个空白查询并替换其内容:
let
Source = Python.Execute("# Python:#(lf)",[df1=Table1, df2=Table2])
in
Source
Run Code Online (Sandbox Code Playgroud)
在您可以单击 Source 旁边的齿轮以添加您可以使用 df1 和 df2 的 python 代码之后。