Pandas 使用str函数更改dataframe列标题

Pandas 使用str函数更改dataframe列标题,pandas,Pandas,我正在尝试更改dataframe的现有列标题 我有以下标题: headers = df.columns.values print(headers) ['Period Ending:' '201931/12' '201831/12' '201731/12' '201631/12'] 我想要这个: ['year' '2019' '2018' '2017' '2016'] 我的代码是: a = headers[1].str[:4] b = headers[2].str[:4] c = header

我正在尝试更改dataframe的现有列标题

我有以下标题:

headers = df.columns.values
print(headers)
['Period Ending:' '201931/12' '201831/12' '201731/12' '201631/12']
我想要这个:

['year' '2019' '2018' '2017' '2016']
我的代码是:

a = headers[1].str[:4]
b = headers[2].str[:4]
c = headers[3].str[:4]
d = headers[4].str[:4]
headers = ['year', a, b, c, d]
df.columns = headers
print(df)
但它正在返回这个:

AttributeError: 'str' object has no attribute 'str'
有人知道这里出了什么问题吗


非常感谢

首先按
[1::
对所有不带首字母的列进行切片,然后按
str[:4]
对前4个字母进行切片,转换为列表并在
[year]
前面加上前缀:

df = pd.DataFrame(columns=['Period Ending:', '201931/12', '201831/12',
                           '201731/12', '201631/12'])
print (df)
Empty DataFrame
Columns: [Period Ending:, 201931/12, 201831/12, 201731/12, 201631/12]
Index: []


print (df.columns[1:])
Index(['201931/12', '201831/12', '201731/12', '201631/12'], dtype='object')
print (df.columns[1:].str[:4])
Index(['2019', '2018', '2017', '2016'], dtype='object')
df.columns = ['year'] + df.columns[1:].str[:4].tolist()
print (df)
Empty DataFrame
Columns: [year, 2019, 2018, 2017, 2016]
Index: []