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
用作变量名。它是列表构造函数的名称。