为什么引用了数据 但在指定索引后 数据全部为NAN

data={'a':[1,2,3,4],
'b':(5,6,7,8),
'c':np.arange(9,13)}
frame=pd.DataFrame(data,index=['A','B','C','D'],columns=['A','B','C'])
print(frame)
结果为
A B C
A NaN NaN NaN
B NaN NaN NaN
C NaN NaN NaN
D NaN NaN NaN

我运行的都没有问题。你把结果贴出来看看?

In [4]: import numpy as np
   ...: import pandas as pd
   ...: ps=pd.Series(range(5),index=['a','b','c','d','e'])
   ...: ps
   ...: df=pd.DataFrame(np.arange(9).reshape(3,3),index=['a','b','c'],columns=['A','B','C'])
   ...: # reindex 创建一个符合新索引的新对象
   ...: ps=ps.reindex(['a','b','c','d','e','f','g'])
   ...: ps
   ...: #列索引重建
   ...: df.columns=list('123')

In [5]: df
Out[5]: 
   1  2  3
a  0  1  2
b  3  4  5
c  6  7  8

In [6]: import numpy as np
   ...: import pandas as pd
   ...: #利用字典构造dataframe
   ...: data={'a':[1,2,3,4],
   ...: 'b':(5,6,7,8),
   ...: 'c':np.arange(9,13)}
   ...: frame=pd.DataFrame(data)
   ...: frame
   ...: # 通过index查看行索引
   ...: frame.index
   ...: #通过columns查看列索引
   ...: frame.columns
   ...: #通过value查看值
   ...: frame.values
   ...: #指定Index
   ...: frame=pd.DataFrame(data,index=['A','B','C','D'])
   ...: frame
   ...: #指定列索引
   ...: frame.columns=('A','B','C')
   ...: frame
Out[6]: 
   A  B   C
A  1  5   9
B  2  6  10
C  3  7  11
D  4  8  12

img
查看文档,当data为dict时,再指定column, 会从已有的columns中选择指定的column.
如果你想要对列进行重命名,可以使用如下代码:

frame.columns=list("ABC")