首页 > 解决方案 > 我的 .loc 有多个条件一直在运行...帮我降落飞机

问题描述

当我尝试运行下面的代码时,它一直在运行。有什么明显的吗?

df.loc[(df['Target_Group'] == 'x') & (df['Period'].dt.year == df['Year_Performed'].dt.year), ['Target_P']] = df.loc[(df['Target_Group'] == 'x') & (df['Period'].dt.year == df['Year_Performed'].dt.year), ['y']]

标签: pandas

解决方案


pandasindex敏感的,所以你不需要重复赋值条件

cond=(df['Target_Group'] == 'x') & (df['Period'].dt.year == df['Year_Performed'].dt.year)
df.loc[cond, 'Target_P'] = df.y

更多信息,示例

df=pd.DataFrame({'cond':[1,2],'v1':[-110,-11],'v2':[9999,999999]})
df.loc[df.cond==1,'v1']=df.v2
df
Out[200]: 
   cond    v1      v2
0     1  9999    9999
1     2   -11  999999

如果索引包含重复

df.loc[cond, 'Target_P'] = df.loc[cond,'y'].values

推荐阅读