我有一个数据框 df,我试图在其中根据条件填充空“Set”列中的值。条件如下:每当'valence_median_split'列的值在相应行中为'Low_Valence'时,'Set'列的值需要为“IN”,在所有其他情况下为“OUT”。请参阅下面的示例,了解我尝试解决此问题的示例:df.head()Out[65]: ID Category Num Vert_Horizon Description Fem_Valence_Mean \0 Animals_001_h Animals 1 h Dead Stork 2.40 1 Animals_002_v Animals 2 v Lion 6.31 2 Animals_003_h Animals 3 h Snake 5.14 3 Animals_004_v Animals 4 v Wolf 4.55 4 Animals_005_h Animals 5 h Bat 5.29 Fem_Valence_SD Fem_Av/Ap_Mean Fem_Av/Ap_SD Arousal_Mean ... Contrast \0 1.30 3.03 1.47 6.72 ... 68.45 1 2.19 5.96 2.24 6.69 ... 32.34 2 1.19 5.14 1.75 5.34 ... 59.92 3 1.87 4.82 2.27 6.84 ... 75.10 4 1.56 4.61 1.81 5.50 ... 59.77 JPEG_size80 LABL LABA LABB Entropy Classification \0 263028 51.75 -0.39 16.93 7.86 1 250208 52.39 10.63 30.30 6.71 2 190887 55.45 0.25 4.41 7.83 3 282350 49.84 3.82 1.36 7.69 4 329325 54.26 -0.34 -0.95 7.82 valence_median_split temp_selection set 0 Low_Valence Animals_001_h 1 High_Valence NaN 2 Low_Valence Animals_003_h 3 Low_Valence Animals_004_v 4 Low_Valence Animals_005_h [5 rows x 36 columns]df['set'] = np.where(df.loc[df['valence_median_split'] == 'Low_Valence'], 'IN', 'OUT') ValueError: Length of values does not match length of index我可以通过使用 loc 将 df 分成两个不同的 df 来实现这一点,但想知道是否有使用“np.where”或类似方法的更优雅的解决方案。
1 回答
FFIVE
TA贡献1797条经验 获得超6个赞
改成
df['set'] = np.where(df['valence_median_split'] == 'Low_Valence', 'IN', 'OUT')
如果需要 .loc
df.loc[df['valence_median_split'] == 'Low_Valence','set']='IN'
df.loc[df['valence_median_split'] != 'Low_Valence','set']='OUT'
添加回答
举报
0/150
提交
取消