讓我們考慮這個數據幀:爲什麼NaN在使用pd.Dataframe()創建數據框時手動設置索引?
df = pd.DataFrame(np.random.rand(4,4), columns = ['A', 'B', 'AB', 'O'])
df
Out[1]:
A B AB O
0 0.704744 0.032988 0.514788 0.405281
1 0.978119 0.354312 0.273255 0.908691
2 0.653161 0.337653 0.309225 0.008059
3 0.023022 0.110995 0.751048 0.088853
現在讓我們說,我們要選擇兩列,並使用另一列作爲索引。我們可以用set_index()
並得到它很容易做到,但讓我們嘗試一種更麻煩的方式,並使用pd.DataFrame()
:
pd.DataFrame(df[['B','AB']], index = df['A'].values)
Out[2]:
B AB
0.704744 NaN NaN
0.978119 NaN NaN
0.653161 NaN NaN
0.023022 NaN NaN
爲什麼這導致NaN
值?
如果我將整數列表作爲索引(例如index = [10,11,12,13]
),則會出現同樣的問題。
通過將數據作爲numpy.ndarray
與df[['B','AB']].values
一起傳遞,我們可以很容易地解決這個問題。沒有NaN
值將以這種方式顯示。
此外,沒有NaN
值與pd.DataFrame(df[['B','AB']])
一起顯示,其中索引不再指定。
但是,再次,爲什麼NaN
值爲上面的代碼?
因爲有對'B'和沒有價值'AB'在索引'10','11','0.704744'等。 –
有趣。你的意思是我傳遞給'index'參數的值用於選擇'df [['B','AB']''中的數據點? – Alex