pandas.DataFrame.ix 这种定位方式已经被 deprecated
举例说明原因:
import pandas as pd
import numpy as np
data = pd.DataFrame(np.arange(16).reshape(4, 4), columns=['A', 'B', 'C', 'D'])
# 查看DataFrame数据
print(data)
# 定位到(2, 2)单元格
print(data.ix[1, 1])
# 添加一列,列名为1,数字非字符列名
data[1] = pd.Series(['a', 'a', 'a', 'a'])
# 查看DataFrame数据
print(data)
# 定位单元格
print(data.ix[1, 1])
第一次定位单元格的输出为:5
第二次定位单元格的输出为:a(列名定位而非列号定位)
可以看出,当DataFrame的列名为数字而非字符时,.ix 这种混合定位方式无法识别某一列的列名与另一列的列号相同而产生的冲突,不会报错,而是默认为列名定位,可能不会返回希望得到的数据。
因此,该定位方式被 deprecated,推荐使用更严格的列名定位方式 .loc 或列号定位方式 .iloc