2016-08-12 200 views
2

我想改變我的指數。我的數據幀如下:Python DataFrame:如果我更改索引,爲什麼我的值更改爲NaN?

partA = pd.DataFrame({'u1': 2, 'u2': 3, 'u3':4, 'u4':29, 'u5':4, 'u6':1, 'u7':323, 'u8':9, 'u9':7, 'u10':5}, index = [20]) 

它給出了大小爲(1,10)的數據幀,其中所有單元格都已填充。

但是,當我創建一個新的數據幀(這在我的原始代碼中包含不同的數據時是必需的),並且我更改了此數據幀的索引時,我的單元格的值都等於NaN

我知道我可以使用reset_index來更改索引,但我希望能夠在一行中完成所有操作。

我現在所做的是以下(導致NaN的)

partB = pd.DataFrame(partA, columns = ['A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'I','J']) 
+0

請提出新問題與新的崗位,而不是編輯你的問題。 – ayhan

回答

1

你需要values轉換partAnumpy array

partA = pd.DataFrame({'u1': 2, 'u2': 3, 'u3':4, 'u4':29, 'u5':4, 'u6':1, 
         'u7':323, 'u8':9, 'u9':7, 'u10':5}, index = [20]) 
print (partA) 
    u1 u10 u2 u3 u4 u5 u6 u7 u8 u9 
20 2 5 3 4 29 4 1 323 9 7 

partB = pd.DataFrame(partA.values,columns = ['A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'I','J']) 
print (partB) 
    A B C D E F G H I J 
0 2 5 3 4 29 4 1 323 9 7 

如果從partA需求指數:

partB = pd.DataFrame(partA.values, 
        columns = ['A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'I','J'], 
        index = partA.index) 
print (partB) 
    A B C D E F G H I J 
20 2 5 3 4 29 4 1 323 9 7 

您得到NaN,因爲不對齊的列名,因此,如果改變了姓氏(u7),你得到的值:

partB = pd.DataFrame(partA, 
        columns = ['A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'I','u7'], 
        index = partA.index) 
print (partB) 
    A B C D E F G H I u7 
20 NaN NaN NaN NaN NaN NaN NaN NaN NaN 323 
+0

謝謝!我在上面添加了另一個問題。 –

+0

第一個問題 - 我認爲最好不是創建空DataFrame,而是通過將所有小DataFrames連接成一個,也許在['concat']中創建參數'keys'(http://pandas.pydata.org/ pandas-docs/stable/generated/pandas.concat.html)很有幫助。 – jezrael

+0

第二個問題 - 你可以添加樣本嗎?但我認爲這是一個新問題,不是熊貓,而是python問題,所以我認爲最好的方法是創建一個新的問題,一些python guru可以幫助你更好地與我一樣。 – jezrael

相關問題