我有以下代码:
dat = pd.DataFrame(np.arange(16).reshape(4,4), index = ['a', 'b', 'c', 'd'], columns = ['A', 'B', 'C', 'D'])
dat.reindex(['b', 'c', 'a', 'd'])
dat
但是,当我查看dat
时,它的索引仍为['a', 'b', 'c', 'd']
。要将dat
与新索引一起保存,我是否只有
dat = dat.reindex(['b', 'c', 'a', 'd'])
作为选择?还是有另一种方法?
另外,当我运行以下命令时:
dat.reindex(['b', 'c', 'a', 'd'], copy = False)
它仍然显示相同的索引['a', 'b', 'c', 'd']
。我不理解 copy 参数的用法?
答案 0 :(得分:1)
您必须保存结果才能访问它。 __init__.py
中的某些函数采用pandas
参数,但reindex没有。
inplace=True
要了解copy参数的用法,请进行比较:
dat = dat.reindex(['b', 'c', 'a', 'd'])
与
dat = pd.DataFrame(np.arange(16).reshape(4,4), index = ['a', 'b', 'c', 'd'], columns = ['A', 'B', 'C', 'D'])
x = dat.reindex(['a', 'b', 'c', 'd'], copy=True)
x.iloc[0,0] += 1
答案 1 :(得分:0)
您可以像这样使用.loc代替重新索引(请参阅下面的注释,最好使用重新索引):
dat.loc[['b','c','a','d'],:]
输出:
A B C D
b 4 5 6 7
c 8 9 10 11
a 0 1 2 3
d 12 13 14 15