如何从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

如何从 Power BI 中的月份编号获取月份名称?

Power BI Python 在Power BI Desktop中Python代码如何使用Power Query数据

Power BI-DAX函数-values

POWER BI DAX函数应用-筛选器函数(上)

如何在 Power BI 中使用 Python 脚本实现插补?