Python 将列名应用于数据帧,名称不再是unicode

Python 将列名应用于数据帧,名称不再是unicode,python,python-2.7,pandas,unicode,Python,Python 2.7,Pandas,Unicode,我创建了一个满是零的数据帧,例如: 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]) 但是,生成的

我创建了一个满是零的数据帧,例如:

      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])

但是,生成的数据帧的列名不再是unicode(即,它们不显示u“”标记)


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

没有丢失unicode的原因,您可以通过以下方式进行检查:

print df.columns.tolist()
请不要使用诸如
列表
类型
id
…之类的保留字。。。作为变量,因为屏蔽了内置函数。对于将值转换为
numpy数组
,还需要添加:

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
我认为最简单的方法是,如果所有值都是
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

如果检查
print df.columns.tolist()
no unicode?检查后是unicode-不幸的是,我的另一个数据集在列名中有剩余的
u'
标记,这让我相信这是一个问题。谢谢不要将
list
用作变量名。它是列表构造函数的名称。