2016-09-21 12 views
0

私はPandasデータフレームのインデックスの名前を変更する2つの方法を見つけました。しかし、データフレームが非常に大きい場合はどちらも実用的ではありません。パンダのインデックスの名前を変更する方法を教えてください。

名前の変更を自動化するにはどうすればよいですか?

方法1:

df=df.rename(index={0: 's1', 1: 's2', 2: 's3', 3: 's4', 4: 's5'}) 

方法2:私はこれを試してみました

df['new_index']=['s1', 's2', 's3', 's4', 's5'] 
df=df.set_index('new_index') 

df=df.rename(index={'s_' + ind for ind in range(1, len(df.index)+1)}) 

は、しかし、それは動作しません。

答えて

1

あなたはstrにキャストintlist comprehensionを使用することができます:あなたが割り当てに使用することができますので、

df.index = ['s_' + str(ind) for ind in range(1, len(df.index)+1)] 

df.index=['s1', 's2', 's3', 's4', 's5'] 
print (df) 
    A 
s1 1 
s2 2 
s3 3 
s4 4 
s5 5 

別simplierソリューション - index1追加され、strにキャストしてconcanecate s_を:

df.index = 's_' + (df.index + 1).astype(str) 
print (df) 
    A 
s_1 1 
s_2 2 
s_3 3 
s_4 4 
s_5 5 

サンプル:

df = pd.DataFrame({'A':range(5)}) 
print (df) 
    A 
0 0 
1 1 
2 2 
3 3 
4 4 

df.index = ['s_' + str(ind) for ind in range(1, len(df.index)+1)] 
print (df) 
    A 
s_1 0 
s_2 1 
s_3 2 
s_4 3 
s_5 4 
1

あなたはラムダ関数を渡すことができます。

df = pd.DataFrame(np.random.randn(5, 2)) 

df 
Out: 
      0   1 
0 -0.473776 0.211539 
1 -2.763357 1.555551 
2 0.157333 0.116125 
3 -1.069105 0.319615 
4 -0.560871 0.572320 

df.rename(index=lambda x: "s{}".format(x+1)) 
Out: 
      0   1 
s1 -0.473776 0.211539 
s2 -2.763357 1.555551 
s3 0.157333 0.116125 
s4 -1.069105 0.319615 
s5 -0.560871 0.572320 
関連する問題