if语句在pandas数据框中的列上进行迭代

时间:2020-04-29 13:23:27

标签: pandas if-statement iteration

我想遍历df ['Social Distancing Advisory']列,并使用.replace()将元素替换为其他元素,但是当我像这样进行设置时,似乎没有任何作用。


import pandas as pd 

df = pd.read_excel('/Users/Arthur/Desktop/COVID-RA/state_data.xlsx')

for column in df['Social Distancing Advisory']:

  if df['Social Distancing Advisory'] == 'sah':
    df['Social Distancing Advisory'].replace('sah','1')

  if df['Social Distancing Advisory'] == 'sip':    
    df['Social Distancing Advisory'].replace('sip','0')
df

ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。

2 个答案:

答案 0 :(得分:0)

您无需反复进行替换字符串。这是一个例子。

svn log -g branch-URL/path/to/x.y@98782

答案 1 :(得分:0)

之所以得到ValueError,是因为df['Social Distancing Advisory'] == 'sah'语句给出了一系列布尔值-True用于那些值与'sah'匹配的索引,否则为False。这正是错误消息的内容。

以下代码可以通过提供pd.Series.replace方法来解决问题,方法是提供所需更改的映射

import pandas as pd 

df = pd.read_excel('/Users/Arthur/Desktop/COVID-RA/state_data.xlsx')

df['Social Distancing Advisory'] = df['Social Distancing Advisory'].replace({
    "sah": "1",
    "sip": "0"
})