2016-07-14 84 views
2

假设我连接两个DataFrames像这样:如何重新索引拼接后的熊猫数据帧

import numpy as np 
import pandas as pd 

array1 = np.random.randn(3,3) 
array2 = np.random.randn(3,3) 

df1 = pd.DataFrame(array1, columns=list('ABC')) 
df2 = pd.DataFrame(array2, columns=list('ABC')) 

df = pd.concat([df1, df2]) 

得到的数据帧df看起来是这样的:

  A   B   C 
0 1.297362 0.745510 -0.206756 
1 -0.056807 -1.875149 -0.210556 
2 0.310837 -1.068873 2.054006 
0 1.163739 -0.678165 2.626052 
1 -0.557625 -1.448195 -1.391434 
2 0.222607 -0.334348 0.672643 

注意的指标是一样的原始的DataFrames。我想重新索引df,以便索引从0简单地运行到5。我怎样才能做到这一点?

(我试过df = df.reindex(index = range(df.shape[0]))但是这给ValueError: cannot reindex from a duplicate axis,这是因为原来的轴包含重复(二0 S,2个1 S等))。

回答

3

要传递ignore_index=Trueconcat

In [68]: 
array1 = np.random.randn(3,3) 
array2 = np.random.randn(3,3) 
​ 
df1 = pd.DataFrame(array1, columns=list('ABC')) 
df2 = pd.DataFrame(array2, columns=list('ABC')) 
​ 
df = pd.concat([df1, df2], ignore_index=True) 
df 

Out[68]: 
      A   B   C 
0 -0.091094 0.460133 -0.548937 
1 -0.839469 -1.354138 -0.823666 
2 0.088581 -1.142542 -1.746608 
3 0.067320 1.014533 -1.294371 
4 2.094135 0.622129 1.203257 
5 0.415768 -0.467081 -0.740371 

这会忽略现有的指数因此,实际上它设置从0开始为新级联指数

0

使用EdChum的成立

的新指标
array1 = np.random.randn(3,3) 
array2 = np.random.randn(3,3) 

df1 = pd.DataFrame(array1, columns=list('ABC')) 
df2 = pd.DataFrame(array2, columns=list('ABC')) 

df = pd.concat([df1, df2]) 
df.reset_index(drop=True) 

enter image description here

+0

除非将输出分配给一个新变量,否则您可能希望将'inplace = True'添加到'reset_index()'调用 – jacanterbury