将列名应用于pandas DataFrame,名称不再是unicode

时间:2017-05-31 05:10:25

标签: python python-2.7 pandas unicode

我创建了一个充满零的DataFrame,例如:

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

零的DataFrame称为a,我正在通过以下列表创建一个新的完整DataFrame列表作为列标题:

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

但是,生成的DataFrame的列名不再是unicode(即它们不显示u''标记)。

我想知道为什么会这样。谢谢!

1 个答案:

答案 0 :(得分:2)

没有理由丢失unicode,你可以通过以下方式检查:

print df.columns.tolist()

请不要使用listtypeid等保留字作为变量,因为屏蔽了内置函数。还需要添加values以将值转换为numpy 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

如果所有值均为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