Python 无法使用pandas提取数据帧列

Python 无法使用pandas提取数据帧列,python,pandas,data-science,data-cleaning,Python,Pandas,Data Science,Data Cleaning,我是新来的熊猫,正在努力重命名一列,然后提取相同的 我已将xls文件读入熊猫数据帧对象 df = pd.read_excel("something.xls") bank_statement.columns.values[0] = 'Din' bank_statement.columns 这显示了列 Index([u'Din', u'Unnamed: 1', u'Unnamed: 2', u'Unnamed: 3', u'Unnamed: 4', u'Unnamed: 5', u'

我是新来的熊猫,正在努力重命名一列,然后提取相同的

我已将xls文件读入熊猫数据帧对象

df = pd.read_excel("something.xls")
bank_statement.columns.values[0] = 'Din'
bank_statement.columns
这显示了列

Index([u'Din', u'Unnamed: 1', u'Unnamed: 2', u'Unnamed: 3', u'Unnamed: 4',
       u'Unnamed: 5', u'Unnamed: 6'],
      dtype='object')
但这会导致错误

bank_statement.Din
错误是:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-11-6ce73c262cd1> in <module>()
----> 1 bank_statement.Din

/Users/monideepde/anaconda2/lib/python2.7/site-packages/pandas/core/generic.pyc in __getattr__(self, name)
   3612             if name in self._info_axis:
   3613                 return self[name]
-> 3614             return object.__getattribute__(self, name)
   3615 
   3616     def __setattr__(self, name, value):

AttributeError: 'DataFrame' object has no attribute 'Din'

我可以访问这些列

Index([u'Din', u'Unnamed: 1', u'Unnamed: 2', u'Unnamed: 3', u'Unnamed: 4',
       u'Unnamed: 5', u'Unnamed: 6'],
      dtype='object')

有人能指出我哪里出了问题吗


谢谢

不要使用
更新内部结构。值

bank_statement.columns.values[0] = 'Din'
改用相应的API函数/方法:

bank_statement = bank_statement.rename(columns={'Unnamed: 0':'Din'})
演示:

让我们来破解它:

In [219]: df.columns.values[0] = 'Din'
这似乎奏效了:

In [220]: df.columns
Out[220]: Index(['Din', 'b', 'c'], dtype='object')
但是:

惊喜Pandas仍然认为它有一个
a
列:

In [222]: df['a']
Out[222]:
0   -0.972161
1    1.081694
2   -0.581193
Name: Din, dtype: float64
解决方法:

In [224]: df.columns = ['Din'] + df.columns.tolist()[1:]

In [225]: df.columns
Out[225]: Index(['Din', 'b', 'c'], dtype='object')

In [226]: df['Din']
Out[226]:
0   -0.972161
1    1.081694
2   -0.581193
Name: Din, dtype: float64

这可能是相关的:非常感谢您的详细回复!出于好奇-df.columns.values[0]=“Din”不起作用!你知道是什么原因吗?它是一个bug(因为提供了一个API,但它不工作),还是有一个合理的理由让它按照自己的方式工作?
In [222]: df['a']
Out[222]:
0   -0.972161
1    1.081694
2   -0.581193
Name: Din, dtype: float64
In [224]: df.columns = ['Din'] + df.columns.tolist()[1:]

In [225]: df.columns
Out[225]: Index(['Din', 'b', 'c'], dtype='object')

In [226]: df['Din']
Out[226]:
0   -0.972161
1    1.081694
2   -0.581193
Name: Din, dtype: float64