如何使用使用两个现有表作为输入的Python脚本创建新表?例如,使用pandas merge执行left join
吗?
一些详细信息:
使用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脚本:
如何更改该设置以引用多个表?
样本数据
这里有两个表,可以存储为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
答案 0 :(得分:5)
这与针对R脚本here所描述的挑战相同。该设置也应适用于Python。但是,我发现该方法有一个缺点:它将新的联接表或计算出的表存储为先前表之一的编辑版本。以下建议将说明如何在不更改输入表的情况下生成全新的计算表(由于this,将Date列的数据类型从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']
在df3
旁边,单击Table
,就是这样:
详细信息:
要使工作正常,必须非常小心地遵循上面的列表。所以这是所有肮脏的小细节:
1。。使用Get Data
将表作为CSV文件加载到Power BI Desktop中。
2。。点击Edit Queries
。
3。。在Table1
中,单击Date column
旁边的符号,选择Text
,然后单击Replace Current
4。。对Table2
5。。在Home
标签上,单击Enter Data
6。。在出现的框中,除了单击OK
以外,什么也不做。
7。。这将在Table3
下插入一个名为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"])
。并且请注意,您在“应用步骤”下有了一个名为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
作为大熊猫数据框在您的python脚本中提供该表。考虑到这一点,我们可以对som进行非常有用的更改:
12。。将编辑栏更改为= Python.Execute("# Python:",[df1=Table1, df2=Table2])
,然后点击Enter
。这将使Table1
和Table2
作为两个分别称为df1
和df2
的两个熊猫数据框可用于您的Python脚本。
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']
这将在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中所有开始的位置。
答案 1 :(得分:1)
您可以创建一个空查询并在高级编辑器中替换其内容:
let
Source = Python.Execute("# Python:#(lf)",[df1=Table1, df2=Table2])
in
Source
在您可以单击Source旁边的齿轮以添加python代码之后,即可在其中使用df1和df2。