2017-05-31 56 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