首页 > 解决方案 > Python Pandas:reindex 属性删除所有以前存在的值

问题描述

在下面df的pandas 数据帧(order_adj数据框的列:

order_adj = [30, 182]

       ID          Date            Order    Values
16672  22000118    2019-11-06          9    0.320934 
16673  22000118    2019-11-06         44    0.213926  
16674  22000118    2019-11-06         72    0.178836  
16675  22000118    2019-11-06        135    0.182151  
16676  22000118    2019-11-06        226    0.162838

我使用以下命令设置数据帧的索引: df.index = df.Order.values

       ID          Date            Order    Values
9      22000118    2019-11-06          9    0.320934 
44     22000118    2019-11-06         44    0.213926  
72     22000118    2019-11-06         72    0.178836  
135    22000118    2019-11-06        135    0.182151  
226    22000118    2019-11-06        226    0.162838

但是当我使用df = df.reindex(index = order_adj)而不是接收时:

       ID          Date            Order    Values
9      22000118    2019-11-06          9    0.320934 
30     nan         nan               nan    nan
44     22000118    2019-11-06         44    0.213926  
72     22000118    2019-11-06         72    0.178836  
135    22000118    2019-11-06        135    0.182151
182    nan         nan               nan    nan  
226    22000118    2019-11-06        226    0.162838

我收到

       ID          Date            Order    Values
30     nan         naT               nan    nan
182    nan         naT               nan    nan  

我到底错过了什么?

标签: pythonpandas

解决方案


你可以试试:

df=df.reindex([*df.index,*order_adj]).sort_index()

或者

df=df.reindex(df.index.tolist()+order_adj).sort_index()

输出df

        ID          Date        Order   Values
9       22000118.0  2019-11-06  9.0     0.320934
30      NaN         NaN         NaN     NaN
44      22000118.0  2019-11-06  44.0    0.213926
72      22000118.0  2019-11-06  72.0    0.178836
135     22000118.0  2019-11-06  135.0   0.182151
182     NaN         NaN         NaN     NaN
226     22000118.0  2019-11-06  226.0   0.162838

推荐阅读