
您可以通过一个简单的示例看到差异。让我们考虑以下数据帧:
df = pd.Dataframe({'a': [1, 2],'b': [3, 4]})print (df) a b0 1 31 2 4索引则为0和1
如果
set_index与列“ a”一起使用,则索引为1和2。如果这样做
df.set_index('a').loc[1,'b'],则得到3。现在,如果您要使用
reindex相同的索引1和2(例如)
df.reindex([1,2]),则在执行 *** 作时将获得4.0
df.reindex([1,2]).loc[1,'b']
发生的事情是,
set_index用(1,2)(“ a”列中的值)替换了先前的索引(0,1),而没有触及“ b”列中的值的顺序
df.set_index('a') ba 1 32 4同时
reindex更改索引,但将与原始df中的索引关联的列“ b”中的值保留
df.reindex(df.a.values).drop('a',1) # equivalent to df.reindex(df.a.values).drop('a',1) b1 4.02 NaN# drop('a',1) is just to not care about column a in my example最后,
reindex在不更改与每个索引相关联的行的值的情况下更改索引的顺序,同时
set_index将使用列的值更改索引,而无需触及数据框中其他值的顺序
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)