有条件地创建Pandas Dataframe列

时间:2016-01-27 19:10:18

标签: python numpy pandas

我尝试使用np.where来过滤列速度以及满足条件的位置,在列'C'中指定一个值。出于某种原因,我将所有内容都归为真。这个人似乎工作得很好SO question所以我有点难过。任何帮助将不胜感激。

df["C"] = np.where(df.speed > 3, 'true','false')

   speed   C  
0  3.34    true  
1  0.02    true  
2  0.01    true  
3  8.41    true  
4  0.03    true  

2 个答案:

答案 0 :(得分:1)

你的速度变量不是整数,所以这个测试失败了。它们可能是物体。如果使用整数正确初始化数据帧,则可以按预期工作。

例如,如果我将速度列的所有数据类型都转换为字符串,我可以获得此处的输出。

答案 1 :(得分:0)

对于遇到此问题的任何人,上面一位明智的评论者建议我查看数据框是如何创建的,所以我查看了dtypes并找到了

id                       int64
speed                   object
C                       object

此代码修复了问题:

df['speed'] = df['speed'].astype(float)