簡體   English   中英

添加列值后 Pandas 將所有數據轉換為 NaN

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM