繁体   English   中英

在 Power BI 中使用 Python 脚本时列名(姓氏)的语法错误

[英]Syntax error on column name (Last Name) when using Python Script in Power BI

我一直在讨论这个问题。 我正在 Power BI 中编写一个简单的 Python 脚本。 我正在尝试加载 Dataframe 并根据条件列更改特定人员的部门,即如果他们有一个是,那么部门将为他们更改数据。 我真的可以使用一些反馈来了解如何更改语法以及我的代码是否正确。 具体来说,我在 Last Name 列的名称上遇到语法错误。 这就是我所拥有的:

import pandas as pd

final = pd.DataFrame(dataset.loc[:,'Department','Last Name','Employee Promotion'])

for i in pd.final:
    if i in pd.final.loc['Last Name'] = "Carter" and in pd.final.loc['Employee Promotion'] = True:
        new_department = "Admin"
        pd.final(dataset.loc[:,'Department') = new_department
        pass
    ifelse i in pd.final.loc['Last Name'] = "Litwack" and in pd.final.loc['Employee Promotion'] = True: 
        new_department1 = "OAAS"
        pd.final(dataset.loc['Department') = new_department1
    else pd.final.loc['Department']

首先,肯定是 go 通过一些 Python 教程 Python 语法和if语句。 完成后,还请阅读一些Pandas 教程 这些会让你走得更远。

下面几行有几个问题。 首先,在 Python 中没有ifelse语句——我认为你的意思是elif 其次, =是赋值运算符。 对于平等,您需要使用== 另外,我认为您的意思不是for i in pd.final: ,而是for i in final 您的 dataframe 是final ,而不是pd.final

    ifelse i in pd.final.loc['Last Name'] = "Litwack" and in pd.final.loc['Employee Promotion'] = True: 
        new_department1 = "OAAS"
        pd.final(dataset.loc['Department') = new_department1
    else pd.final.loc['Department']

这应该可以帮助您解决语法错误,但是有更好的方法来完成您想要完成的工作。 Pandas 的部分优点在于它允许矢量化操作,这意味着我们不需要使用for循环。 以下是如何仅为符合条件的行设置值。

>>> import pandas as pd

>>> df = pd.DataFrame(
        [
            ["ABC", "Carter", True],
            ["ABC", "Carter", False],
            ["ABC", "Litwack", False],
            ["ABC", "Litwack", True],
            ["ABC", "Doe", False],
            ["ABC", "Doe", True]
        ],
        columns = ["Department", "Last Name", "Employee Promotion"])

>>> df
  Department Last Name  Employee Promotion
0        ABC    Carter                True
1        ABC    Carter               False
2        ABC   Litwack               False
3        ABC   Litwack                True
4        ABC       Doe               False
5        ABC       Doe                True

您可以使用 boolean 索引基于一组标准进行过滤,如答案https://stackoverflow.com/a/15315507/5666087中所示。

>>> mask = (df.loc[:, "Last Name"] == "Carter") & (df.loc[:, "Employee Promotion"])
>>> print(mask)
0     True
1    False
2    False
3    False
4    False
5    False
dtype: bool

上面的mask是 boolean 数组,其中每个值表示该行是否符合我们的标准。 然后我们可以 select 符合我们标准的行和获取值的列,我们用=覆盖这些值。

df.loc[mask, "Department"] = "Admin"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM