我找到了两种方法来重命名Pandas数据帧中的索引。但是当数据帧非常大时,两者都不实用。
如何自动重命名?
方法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)})
但它不起作用。
答案 0 :(得分:1)
您可以将list comprehension
与演员int
一起用于str
:
df.index = ['s_' + str(ind) for ind in range(1, len(df.index)+1)]
因为您可以使用assign:
df.index=['s1', 's2', 's3', 's4', 's5']
print (df)
A
s1 1
s2 2
s3 3
s4 4
s5 5
另一个更简单的解决方案 - 将s_
添加到1
并index
并str
加入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
样品:
mw_alerts
答案 1 :(得分:1)
您可以传递lambda函数:
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