我有一個 csv 檔案,其中存盤為 uncov_users.csv 的以下資料:2867,2978
我正在嘗試從 CSV 檔案中獲取資料并進行列印,但出現錯誤。我需要單獨變數中的資料,所以我使用for i,j回圈。
我的代碼:
import numpy as np
uncov_users = np.genfromtxt('ucov_users.csv', delimiter=',')
for i,j in uncov_users:
ux_coor = i
uy_coor = j
print(ux_coor,uy_coor)
錯誤:
Traceback (most recent call last):
File "D:\Programmes\Final_Year\Plot_DFO\test.py", line 3, in <module>
for i, j in uncov_users:
TypeError: cannot unpack non-iterable numpy.float64 object
我只是想了解它有什么問題以及如何修復它。
uj5u.com熱心網友回復:
嘗試這個:
import numpy as np
text = open("ucov_users.csv", "r")
text = ''.join([i for i in text]) \
.replace(" ", "\n")
x = open("ucov_users.csv", "w")
x.writelines(text)
x.close()
uncov_users = np.genfromtxt('ucov_users.csv', delimiter=',')
for i,j in uncov_users:
ux_coor = i
uy_coor = j
print(ux_coor,uy_coor)
uj5u.com熱心網友回復:
使用熊貓。您可以將 csv 放入資料框中,然后將列轉換為 numpy 陣列:
import pandas
import numpy as np
dataframe = pandas.read_csv('ucov_users.csv', delimiter=',')
ux_coord = np.array(dataframe.iloc[:, 0])
uy_coord = np.array(dataframe.iloc[:, 1])
uj5u.com熱心網友回復:
你的uncov_users變數是錯誤的形狀。對于回圈
for i,j in uncov_users:
# stuff ...
要作業,uncov_users需要是一個包含兩列的二維陣列,以便i可以從第一列分配一個值,從第二列分配一個值j。
for如果你像這樣重寫你的回圈,這個問題會更容易看出:
for row in uncov_users:
i,j = row
# stuff ...
對于uncov_users您擁有的陣列,row它只是一個數字(或者準確地說是一個numpy.float64物件),因此無法解包。它沒有兩個組件可以分配給變數i和j.
解決此問題的最簡單方法可能是使用該numpy.atleast_2d()功能,例如,
uncov_users = np.atleast_2d(np.genfromtxt('ucov_users.csv', delimiter=','))
這樣,如果檔案ucov_users.csv只有一行兩列,則陣列uncov_users仍將有兩列,而不是具有兩個元素的一維陣列。(當然,這假設ucov_users.csv總是有兩列。)
uj5u.com熱心網友回復:
采用:
for row in uncov_users:
ux_coor, uy_coor = row
print(ux_coor,uy_coor)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/454627.html
標籤:Python python-3.x 麻木的 CSV
