[英]Reading data from a CSV file yields TypeError
我有一個 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
我只是想了解它有什么問題以及如何解決。
嘗試這個:
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)
使用 pandas。您可以將 csv 放入 dataframe,然后將列轉換為 numpy arrays:
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])
您的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()
function,例如,
uncov_users = np.atleast_2d(np.genfromtxt('ucov_users.csv', delimiter=','))
這樣,如果文件ucov_users.csv
只有一行兩列,數組uncov_users
仍將有兩列,而不是包含兩個元素的一維數組。 (當然,這假設ucov_users.csv
總是有兩列。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.