[英]Pandas converting all data to NaN after adding column values
我正在嘗試將列標題添加到以下數據集。 根據項目的規范,我不能簡單地修改文件來手動添加這些標題。
我正在使用的數據示例:
38.049133 0.224026 0.05398 -19.11 -20.03
38.352526 0.212491 0.05378 -18.35 -19.19
38.363598 0.210654 0.05401 -20.11 -20.89
54.936819 0.216794 0.20114 -20.94 -21.88
54.534881 0.578615 0.12887 -19.75 -20.66
54.743075 0.508774 0.18331 -20.54 -21.53
54.867240 0.562636 0.13956 -19.95 -20.85
54.856908 0.544031 0.13938 -20.14 -21.03
54.977748 0.501912 0.13923 -20.27 -21.01
54.992762 0.460376 0.12723 -20.24 -20.83
我創建了一個包含 5 個字符串的數組,用作此 DataFrame 中每一列的標題。 使用指定的標題只選擇那一列(即print(df['z'])
只打印那一列(據說)但 DataFrame 中的所有數據,顯示得很好(即准確顯示上述示例行並正確檢測列)當我不指定列時,當我從字符串數組中指定列標題時突然變成“NaN”。
我的代碼示例:
... imports and whatnot not shown
dataColumns = ['RA', 'DEC', 'z', 'M(g)', 'M(r)']
dataFile = pd.read_csv(data = 'file_name', delim_whitespace = True)
df = pd.DataFrame(data = dataFile, columns = dataColumns)
print(df)
上面代碼的示例輸出(它應該准確顯示上面的示例數據,但添加了列標題):
RA DEC z M(g) M(r)
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN
為什么在沒有為 DataFrame 指定 'columns' 參數的情況下,數據會在指定參數后正確打印,但所有內容都顯示為 NaN?
任何幫助,將不勝感激!
——潘萬
要解決您的問題,請改用此行:
df = pd.read_csv('file_name', header=None, names=dataColumns)
pd.read_csv
返回一個 DataFrame,所以上面的行應該處理整個導入(即在pd.DataFrame
的結果上調用pd.read_csv
是多余的)。 header=None
表示熊貓不應該將 CSV 的第一行解釋為標題,然后names=...
允許您指定要使用的列名稱。 不應使用delim_whitespace
,因為逗號,而不是空格,似乎是數據中的分隔符(畢竟,“逗號”是“csv”中的“c”)。 事實上,如果沒有測試您的數據,我會說delim_whitespace
的使用最有可能是 NaN 值背后的罪魁禍首。
您將使用.read_csv
時創建的數據幀傳遞給數據幀構造函數pd.DataFrame
。 我實際上很驚訝它沒有拋出錯誤。
嘗試這個:
df = pd.read_csv(data = 'file_name', delim_whitespace = True)
df.columns = dataColumns
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.