[英]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.