Python 如果然后是结构以及如何跨多行应用

Python 如果然后是结构以及如何跨多行应用,python,pandas,dataframe,python-3.6,Python,Pandas,Dataframe,Python 3.6,我有一个数据框,包含3列:邮政编码、自治区和邻里区,共257行。你可以暂时忘记邮政编码 对于自治区和邻里区,任何一列都可能已经添加了有效的位置,或者没有被指定,我正在尝试找出如何执行以下操作。如果一个单元有一个有效的自治区位置,可以是任何东西,但未指定该邻域,则该邻域将被设置为与该自治区相同。 所以逻辑是这样的: If Neighbourhood="Not Assigned" AND Borough<>"Not Assigned" then Neighbourhood=Boroug

我有一个数据框,包含3列:邮政编码、自治区和邻里区,共257行。你可以暂时忘记邮政编码

对于自治区和邻里区,任何一列都可能已经添加了有效的位置,或者没有被指定,我正在尝试找出如何执行以下操作。如果一个单元有一个有效的自治区位置,可以是任何东西,但未指定该邻域,则该邻域将被设置为与该自治区相同。 所以逻辑是这样的:

 If Neighbourhood="Not Assigned" AND Borough<>"Not Assigned" then Neighbourhood=Borough
    Repeat for all rows
使用pandas库,我们可以对数据帧使用子集技术

首先,出于测试目的,我重新创建了只包含两列的数据帧:Borough和neighbourth。我还添加了另一行,因为提供的数据都不符合条件

borough = ["Not assigned", "Not assigned", "Not assigned", "Not assigned", "Etobicoke", "Etobicoke", "Etobicoke", "Etobicoke", "Etobicoke", "Not assigned", "Etobicoke"]
neighbourhood = ["Not assigned", "Not assigned", "Not assigned", "Not assigned", "Kingsway Park South West", "Mimico NW", "The Queensway West", "Royal York South West", "South of Bloor", "Not assigned", "Not assigned"]

df = pd.DataFrame({"Borough": borough,
                   "Neighbourhood": neighbourhood})
print(df)
然后我们创建一个条件语句:如果一个单元有一个有效的自治区位置,可以是任何东西,并且没有指定邻域,那么邻域将被设置为与自治区相同

条件是一个布尔序列,它只包含True和False,用于对数据帧进行子集设置

最后,如果行满足条件,我们用Borough列中的值替换neighbour列中的值

borough = ["Not assigned", "Not assigned", "Not assigned", "Not assigned", "Etobicoke", "Etobicoke", "Etobicoke", "Etobicoke", "Etobicoke", "Not assigned", "Etobicoke"]
neighbourhood = ["Not assigned", "Not assigned", "Not assigned", "Not assigned", "Kingsway Park South West", "Mimico NW", "The Queensway West", "Royal York South West", "South of Bloor", "Not assigned", "Not assigned"]

df = pd.DataFrame({"Borough": borough,
                   "Neighbourhood": neighbourhood})
print(df)
或者,您也可以执行循环,但这不是一个好的做法,因为对于较大的数据,计算速度可能较慢:

for idx, row in df.iterrows():
    condition = (row["Borough"] != "Not assigned") & (row["Neighbourhood"] == "Not assigned")
    if condition:
        row["Neighbourhood"] = row["Borough"]

你能提供你的python代码吗?在python中,如果。。。那就是如果…:。请避免指出您是初学者以及其他与您的问题无关的短语,因为它们只是分散注意力,例如,如果您是初学者或专家,我们不感兴趣,而是问题本身。
for idx, row in df.iterrows():
    condition = (row["Borough"] != "Not assigned") & (row["Neighbourhood"] == "Not assigned")
    if condition:
        row["Neighbourhood"] = row["Borough"]