【发布时间】:2021-06-09 23:37:59
【问题描述】:
我一直在使用 Power Query 处理一些数据,框架的灵活性给我留下了深刻的印象。目前,我希望在 Pandas 中复制条件列步骤,因为我想将其包含在自动数据清理脚本管道中。
在这种情况下,Power Query 创建一个名为 acc_col 的新列,查看数据集中的每一列(Tags.1、Tags.2 等)以及该列中的字符串是否与值的开头匹配(Acceleration- ) 然后将该值输出到新列中,否则如果未找到匹配项,则输出 Unknown Acc。 这是编辑器的样子
#"Added Conditional Column" = Table.AddColumn(#"Replaced Value", "acc_col", each if Text.StartsWith([Tags.1], "Acceleration-") then [Tags.1] else if Text.StartsWith([Tags.2], "Acceleration-") then [Tags.2] else if Text.StartsWith([Tags.3], "Acceleration-") then [Tags.3] else if Text.StartsWith([Tags.4], "Acceleration-") then [Tags.4] else if Text.StartsWith([Tags.5], "Acceleration-") then [Tags.5] else "Unknown Acc")
我在 Pandas 上尝试了一些东西,但我的知识有点有限。我设法使用以下方法读取了标签列之一
| Tags0 | Tags1 | Tags2 |
|---|---|---|
| Alumni-2017,Acceleration-2016 | None | None |
| Alumni | Acceleration-2017 | None |
| Acceleration-2015 | None | None |
| Alumni-2017 | Acceleration-2015 | None |
| Alumni-2017 | Acceleration-2014 | None |
df['acc_col'] = df['Tags0'].where(df['Tags0'].str.contains('Acceleration', na=False), )
| Tags0 | Tags1 | Tags2 | acc_col |
|---|---|---|---|
| Alumni-2017,Acceleration-2016 | None | None | Acceleration-2016 |
| Alumni | Acceleration-2017 | None | None |
| Acceleration-2015 | None | None | Acceleration-2015 |
| Alumni-2017 | Acceleration-2015 | None | None |
| Alumni-2017 | Acceleration-2014 | None | None |
我看到输出包含所有包含关键字的内容,但如果我希望对其他列执行相同操作,它会覆盖以前的结果。我需要它们都在同一列上,因为它一一阅读。
df['acc_col'] = df['Tags1'].where(df['Tags1'].str.contains('Acceleration', na=False), )
| Tags0 | Tags1 | Tags2 | acc_col |
|---|---|---|---|
| Alumni-2017,Acceleration-2016 | None | None | None |
| Alumni | Acceleration-2017 | None | Acceleration-2017 |
| Acceleration-2015 | None | None | None |
| Alumni-2017 | Acceleration-2015 | None | Acceleration-2015 |
| Alumni-2017 | Acceleration-2014 | None | Acceleration-2014 |
我觉得我很接近了,但我需要更多帮助。
【问题讨论】:
-
请添加示例数据框,并提供预期输出。请添加数据,而不是图片或重定向
-
@sammywemmy 嘿,我编辑了外观,以便我包含数据框。我想添加图片作为我在 powerBI 中所做工作的参考
标签: python pandas powerbi powerquery