以下代码有效:
print(ee.columns[0][1:])
但是当我将其推广到所有列时,代码将不起作用:
ee.columns = ee.columns.astype(str)
for i in range(0,len(ee.columns)-1):
ee.columns[i] = ee.columns[i][1:]
我收到错误消息:“索引不支持可变操作”。
答案 0 :(得分:6)
您可以通过使用字符串访问器str
并从第一个元素开始进行选择来轻松实现此目的:
df.columns = df.columns.str[1:]
答案 1 :(得分:0)
为什么不使用.rename()
:
ee.rename({c: c[1:] for c in ee.columns if c.startswith('M')}, axis='columns', inplace=True)
答案 2 :(得分:0)
由于您正在动态更新索引列表的内容而发生错误。原因是熊猫索引为immutable。
ee.columns = [i[1:] for i in ee.columns]
答案 3 :(得分:0)
yatu答案的确非常好,因为它可以完美地回答您的答案,例如“我如何取出第一个字符”,但是如果您想要更强大的功能...
import pandas as pd
df = pd.DataFrame({
'A0' : [1, 2],
'A1' : [2, 2],
'A2' : [3, 2],
'3A' : [4, 2],
'A4' : [5, 2],
'A5' : [6, 2]
})
print(df.head())
# A0 A1 A2 3A A4 A5
# 0 1 2 3 4 5 6
# 1 2 2 2 2 2 2
df.columns = df.columns.str.replace(r'^A', '')
print(df.head())
# 0 1 2 3A 4 5
# 0 1 2 3 4 5 6
# 1 2 2 2 2 2 2
如您所见,我使用正则表达式模式替换了您的列名,并使用了与第一个一样简单的技术。 ;)