如何从power bi中的python函数返回单个数据帧
Posted
技术标签:
【中文标题】如何从power bi中的python函数返回单个数据帧【英文标题】:How to return a single dataframe from python function in power bi 【发布时间】:2021-01-19 21:30:08 【问题描述】:我正在尝试编写一个在 power bi 中仅返回一个数据帧的 python 函数。我的 python 脚本中有多个数据帧,但我只想在我的 power bi 环境中返回或打印一个数据帧。
这是我的试用版,但由于某种原因,它在尝试连接时没有返回任何内容。
import pandas as pd
import numpy as np
def my_func():
df=[["d","t","u","y","e"],["d",np.nan,np.nan,np.nan,"o"],["y","p","p","w","r"]]
df1=[["d","t","u","y","e"],["d",np.nan,np.nan,np.nan,"o"],["y","p","p","w","r"]]
df=pd.DataFrame(df)
df1=pd.DataFrame(df1)
return df
my_func()
我期待这个脚本返回df
,但它没有返回任何东西。有什么我想念的吗?任何人都可以帮助我吗?我缺少什么以及为什么它不起作用?
但是,当我不使用函数时,这可以正常工作。
我只是想知道为什么当我使用函数并返回时这不起作用。
【问题讨论】:
【参考方案1】:如果您的目标是在 power bi 中导入它,请尝试将最后一行更改为
print(my_func())
根据microsoft instruction
【讨论】:
我认为没有必要打印数据框。即使没有打印调用,我也能够加载数据框。数据框需要存储在一个变量中。【参考方案2】:答案:
改变这个:
my_func()
到这里:
output = my_func()
这是假设您不试图通过 PowerBI 桌面中的 Py Visual 执行此操作:
详情:
据我所知,要在 PowerBI 中使用 Python,您需要输出一个 pandas 数据帧,并且仅一个 pandas 数据帧(除非您使用的是 Python visual object
。看起来你不是)。如果您在此处指定了如何运行 Python,那么给出简明的答案会更容易。但我可以向您展示一个示例,该示例使用 Power Query 编辑器中的 sn-p 验证我的初始语句。有关所有必要的详细信息,请查看Power BI: How to use Python with multiple tables in the Power Query Editor?。
启动 Power Query 编辑器后,选择 Get Data
并单击 OK
以插入一个空表。然后转到Transform
并选择Run Python Script
。在以下对话框中,插入您的脚本并运行它,您将获得此设置:
然后单击output
旁边的Table
以获取您的数据框:
如果您点击dataset
旁边的Table
,您将一无所获。那是因为您从一个空数据框开始。如果您的 Python 脚本是更复杂的数据加载过程的一部分,那么dataset
将包含您的 Python 脚本可以构建的数据。那么,答案又是什么呢?如果没有output
,您将无法访问您的数据框。如果没有output = myFunc()
,那么您就不会让 PowerBI 知道您已经使用 Python 构建了一个数据框。然后,您将在 Power Query 编辑器中获得的只有以下内容:
我希望这现在有意义。如果没有,请随时告诉我。
编辑
您不必在output = my_func()
中将数据框命名为output
。你可以随意称呼它。在您的代码 sn-p 中构建的任何 pandas 数据框都将在此表中可用:
【讨论】:
以上是关于如何从power bi中的python函数返回单个数据帧的主要内容,如果未能解决你的问题,请参考以下文章
Power BI 中的 Python 脚本将日期返回为 Microsoft.OleDb.Date