我有一個csv文件中的數據,它看起來像這樣導入。Python - 將數據拆分爲csv文件中的列
import csv
with open('Half-life.csv', 'r') as f:
data = list(csv.reader(f))
數據會以這種形式出現在打印出像data[0] = ['10', '2', '2']
等行的位置。
我想要的是雖然檢索數據作爲列而不是行,在這種情況下,有3列。
我有一個csv文件中的數據,它看起來像這樣導入。Python - 將數據拆分爲csv文件中的列
import csv
with open('Half-life.csv', 'r') as f:
data = list(csv.reader(f))
數據會以這種形式出現在打印出像data[0] = ['10', '2', '2']
等行的位置。
我想要的是雖然檢索數據作爲列而不是行,在這種情況下,有3列。
您可以創建三個單獨的列表,然後使用csv.reader
附加到每個列表。
import csv
c1 = []
c2 = []
c3 = []
with open('Half-life.csv', 'r') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
c1.append(row[0])
c2.append(row[1])
c3.append(row[2])
''''''循環可以替換爲'''columns = zip(* reader)'''。 – wwii
多一點自動化和柔性版的Alexander's answer:
import csv
from collections import defaultdict
columns = defaultdict(list)
with open('Half-life.csv', 'r') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
for i in range(len(row)):
columns[i].append(row[i])
# Following line is only necessary if you want a key error for invalid column numbers
columns = dict(columns)
你也可以修改此使用的列標題,而不是列編號。
import csv
from collections import defaultdict
columns = defaultdict(list)
with open('Half-life.csv', 'r') as f:
reader = csv.reader(f, delimiter=',')
headers = next(reader)
column_nums = range(len(headers)) # Do NOT change to xrange
for row in reader:
for i in column_nums:
columns[headers[i]].append(row[i])
# Following line is only necessary if you want a key error for invalid column names
columns = dict(columns)
另一種選擇,如果你有安裝numpy
,您可以使用loadtxt
讀取csv文件到numpy的陣列。如果你想要更多的列而不是行(你對數據的外觀不太清楚),那麼你可以轉置數組。例如:
import numpy as np
# Load data
data = np.loadtxt('csv_file.csv', delimiter=',')
# Transpose data if needs be
data = np.transpose(data)
你可以安裝熊貓嗎? 'pandas.read_csv('Half-life.csv')'會做到這一點,併爲你推斷適當的類型。 –