在重新索引中使用副本并保存新索引的数据

时间:2018-07-12 13:14:39

标签: python pandas

我有以下代码:

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 参数的用法?

2 个答案:

答案 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