Pythonスクリプトで2つの既存のテーブルを入力として使用する新しいテーブルを作成するにはどうすればよいですか?たとえば、 pandas merge を使用して_left join
_を実行しますか?
いくつかの詳細:
_Home > Edit queries
_を使用すると、Python under _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
_を使用して読み込むことができる2つのテーブルを次に示します。
表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でも機能するはずです。ただし、approcahには1つの欠点があることがわかりました。それは、新しい結合テーブルまたは計算テーブルを、前のテーブルの1つの編集バージョンとして保存することです。次の提案は、入力テーブルを変更せずに完全に新しい計算テーブルを作成する方法を示しています( 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 BIDesktopに読み込みます。
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
エディターが開きます。そして、あなたは can ここでスクリプトを書き始めることができますが、それは次のステップで物事を不必要に複雑にします。したがって、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データフレームとして使用して、pandasスクリプトでテーブルを使用できるようにします。これを念頭に置いて、式に非常に便利な変更を加えることができます。
12。数式バーを= Python.Execute("# Python:",[df1=Table1, df2=Table2])
に変更し、Enter
を押します。これにより、Table1
とTable2
がそれぞれdf1
とdf2
という名前の2つのPythonデータフレームとしてpandasスクリプトで使用できるようになります。
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 BIDesktopですべてが開始された場所に戻ります。
空白のクエリを作成し、その内容をAdvancedEditorで置き換えることができます。
let
Source = Python.Execute("# Python:#(lf)",[df1=Table1, df2=Table2])
in
Source
ソースの横にある歯車をクリックして、df1とdf2を使用できるpythonコードを追加できます。