如果满足条件,则pandas将值分配给两个变量

时间:2014-12-16 22:40:53

标签: python pandas

我想逐行检查是否满足某些条件,然后将值分配给多个列。

这就是我想要的,

df.ix[(df.city.isin(["UNKNOWN"]) | df.city.isnull()) & (df.street.str[0:4].str.contains('TRAN')|df.street.str[0:4].str.contains('TRAS')| \
df.street.str[0:4].str.contains('HOM')|df.street.str.contains("(HOMELESS)|")|df.city.str.contains("HOMELESSS") ),'city']="HOMELESS"

df.ix[(df.city.isin(["UNKNOWN"]) | df.city.isnull()) & (df.street.str[0:4].str.contains('TRAN')|df.street.str[0:4].str.contains('TRAS')| \
df.street.str[0:4].str.contains('HOM')|df.street.str.contains("(HOMELESS)|")|df.city.str.contains("HOMELESSS") ),'homeless']=1

但是我想知道是否可以通过迭代两次来实现它。

1 个答案:

答案 0 :(得分:4)

您可以使用列表作为第二轴的索引:

df = pd.DataFrame(np.random.randint(0, 10, size=(10, 4)), columns=list("ABCD"))
df.ix[(df.A > 5) & (df.B < 8), ["A", "B"]] = -10, -10