2017-05-31 34 views
1

我创建了一个数据帧全零,如:应用列名大熊猫据帧,名字不再统一

 0 1 2 
0  0 0 0 
1  0 0 0 
2  0 0 0 
... 
n  0 0 0 

我有一个包含对Unicode的列名,如列表: list = [u'One', u'Two', u'Three']

零的数据框被称为a,和我创建通过列表的列标题一个新的完整的数据帧:

final = pd.DataFrame(a, columns=[list])

但是,生成的DataFrame具有不再是unicode的列名称(即,他们不显示你的标签)。

我想知道为什么会发生这种情况。谢谢!

+0

如果选中'print df.columns.tolist()'no unicode? – jezrael

+0

这是检查后的unicode - 我的其他数据集不幸的是在列名中留下了'u'''标签,导致我相信这是一个问题。谢谢! – Kam

+1

不要使用'list'作为变量名称。这是列表构造函数的名称。 – DyZ

回答

2

没有理由失去unicode的,你可以通过检查:

print df.columns.tolist() 

请千万不要用保留字像listtypeid ...作为变量,因为屏蔽内置功能。也有必要转换值添加valuesnumpy array

a = pd.DataFrame(0, columns=range(3), index=range(3)) 
print (a) 
    0 1 2 
0 0 0 0 
1 0 0 0 
2 0 0 0 

L = [u'One', u'Two', u'Three'] 
final = pd.DataFrame(a.values, columns=L) 
print (final) 
    One Two Three 
0 0 0  0 
1 0 0  0 
2 0 0  0 

,因为列不对齐,并得到所有NaN S:

final = pd.DataFrame(a, columns=L) 
print (final) 
    One Two Three 
0 NaN NaN NaN 
1 NaN NaN NaN 
2 NaN NaN NaN 

我觉得simpliest是只使用a DataFrame指数如果所有值均为0

L = [u'One', u'Two', u'Three'] 
final = pd.DataFrame(0, columns=L, index=a.index) 
print (final) 
    One Two Three 
0 0 0  0 
1 0 0  0 
2 0 0  0