使用python替换电源查询列中的值? [关闭]

Posted

技术标签:

【中文标题】使用python替换电源查询列中的值? [关闭]【英文标题】:Replace values in power query column using python? [closed] 【发布时间】:2021-10-05 23:16:55 【问题描述】:

Power BI/Power 查询和 python 的新手。我希望简洁地问这个问题。

我在 PBI 中有一个“主要”查询,但需要根据(描述)列中的值更改一列(类别)的值。我觉得有比新的条件 if/else 列或 M 代码中的 ReplaceReplacer.text 更好的解决方案。

我的一个想法是创建一个列表或查询 (description) 中需要更改其类别的所有值,并以某种方式使用 python 遍历 (description) 列表以及当它在 (描述),它知道将新值放入类别中。

我在 Google 上进行了广泛搜索,但找不到可以将 python 脚本放入 Power Query/Power BI 的那种“循环”。

我应该朝着哪个方向前进,或者我问的问题正确吗?我会很感激任何建议!

约翰

【问题讨论】:

你能分享一些来自这两列的样本数据吗?那么您在第三列中的预期输出? 这是我正在尝试执行的示例文件的链接 - 根据“描述”列中的值,更改新列“NewCategory”中的值。如您所见,当前类别不准确,因此分析非常有限。 1drv.ms/x/s!AreUw6Bika4qjRwS8SFx0WCTD74w?e=wcwA9E 【参考方案1】:

您手头有一个相当简单的 ETL 任务,显然不能证明合并其他语言(如 Python/Pandas)是合理的。

鉴于您共享的信息有限,我想为您的类别使用单独的映射表,然后将该映射表与您的原始表合并。最终您只保留您感兴趣的列。

例如此映射转换表有 2 列:OLDNEW。然后,您将该映射表与您的数据表合并,使OLD 等于您的Description 列(GUI 将帮助您),然后展开新生成的列。最后重命名要保留的列并删除所有其余列。这比 100 次替换更有效。

【讨论】:

就是这么简单,我都不知道ETL是什么。我知道这不是火箭科学——在电源查询中根据另一列的值更改一列的值——我已经用谷歌搜索了这个地狱。到目前为止,我最好的想法是长语句,例如 100 个 if/else 或如下语句:#"Replaced Value8"= Table.ReplaceValue(#"Replaced Value7", each [Description], each if Text.Contains([ Original Description],"UPWRKESC") 然后是 "Upwork" else [Description], Replacer.ReplaceValue,"Description"), 您的测试数据中没有“UPWRKESC”?但是,这看起来确实像我在答案中建议的那样需要一个单独的映射或转换表。 那 UPWRKESC 是一个不好的例子 - 如果我们可以回到表格请... - 注意第 2 行。在 [description] 中的值是“paypal transfer”。 [类别] 是“转移”。对我来说这没用——“付款”更好。因此,这里的工作是识别 [description] 中具有不正确 [category] ​​值的那些值,并将这些 [category] ​​值替换为准确描述该项目的相关值。就像我有 List.Accumulate 一样,从(描述)中找到“查找值”列表,并为需要更改的 [类别] 找到“替换值”列表。必须缺少一些简单的解决方案 感谢彼得的所有帮助。我可能正在慢慢地绕开这个问题。我认为这个页面以类似的方式进行,但它是图形化的,所以我可以通过一些研究,可能会得到它link 在您的链接中,它是关于 replacing in multiple columns 的,因此您可能希望专注于第一部分。但是,如果我的回答有帮助,请不要忘记接受/投票以奖励自愿帮助。这就是 *** 的工作原理。

以上是关于使用python替换电源查询列中的值? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

电源查询替换值

Python Pandas根据多个其他列中的条件替换一列中的值[重复]

Python Pandas 将一列中的 NaN 替换为第二列对应行的值

在 Oracle 中用 RegEx 替换列中的值

使用 dplyr 有条件地替换列中的值

用 D 列中的值有条件地替换 A、B、C 列中的值