可能的bug:pandas试图用浮点数填充int列

时间:2014-06-06 17:46:14

标签: python pandas

在这个例子中:

In [1]: df
Out[1]: 
   a    b
0  1  1.1
1  2  2.2
2  1  3.3
3  2  4.4

In [2]: df['c'] = 0

In [2]: df.c[df.a == 1] = df.b[df.a == 1]

In [3]: df
Out[3]: 
   a    b                    c
0  1  1.1  4607632778762754458
1  2  2.2                    0
2  1  3.3  4614613358185178726
3  2  4.4                    0

似乎导致的行为令人困惑。我知道问题是我已经初始化了' c'作为int列。相反,如果我使用df['c'] = 0.,那么一切正常。所以我明白为什么我的例子不起作用。看起来似乎可能有更有用的结果或至少是错误消息而不是看似随机的大数字。绝对是一件好事,而不是必须拥有。

1 个答案:

答案 0 :(得分:2)

您是链式索引,请参阅here

使用:

df.loc[df.a==1,'c'] = df['b']