如何使用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.这将插入一个名为Table3under 的空表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脚本之前做的最后一件事是改变数据类型,那么这部分看起来会有所不同.然后,使用datasetpandas数据框在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 代码之后。
| 归档时间: |
|
| 查看次数: |
4839 次 |
| 最近记录: |