考虑这个小脚本:
import pandas as pd
df = pd.DataFrame({'a': [1,2,3]})
b = df.a
b.index = b.index + 1
df['b'] = b
print(df)
print(df.a - df.b)
输出结果为:
a b
0 1 NaN
1 2 1.0
2 3 2.0
0 NaN
1 0.0
2 0.0
3 NaN
当我期望 df.a - df.b
时
0 NaN
1 1.0
2 1.0
这怎么可能?这是Pandas的bug吗?
aa.index
和aa.a.index
是不同的。看起来pandas在替换引用的索引时感到困惑了(在bb.index = bb.index + 1
中)。 - Yevhen Kuzmovychaa.a.index
在添加列'b'之前和之后是不同的。通过添加相邻列来修改列'a'似乎对我来说也是一种奇怪的行为,尽管我认为这也可能是pandas未被正确使用的情况。也许OP应该研究.diff()
和.join()
,以避免需要将新列分配为整个“Series”对象。 - Owen