私はPython 3.5を使用してディレクトリとサブディレクトリを移動し、csvファイルにアクセスし、それらのファイルのデータで配列を埋めます。コードが遭遇した最初のcsvファイルは次のようになります。私が持っているPython:複数のCSVファイルからリストにデータを読み取る
コードは以下の通りです:
import matplotlib.pyplot as plt
import numpy as np
import os, csv, datetime, time, glob
gpheight = []
RH = []
dewpt = []
temp = []
windspd = []
winddir = []
dirpath, dirnames, filenames = next(os.walk('/strm1/serino/DATA'))
count2 = 0
for dirname in dirnames:
if len(dirname) >= 8:
try:
dt = datetime.datetime.strptime(dirname[:8], '%m%d%Y')
csv_folder = os.path.join(dirpath, dirname)
for csv_file2 in glob.glob(os.path.join(csv_folder, 'figs', '0*.csv')):
if os.stat(csv_file2).st_size == 0:
continue
#create new arrays for each case
gpheight.append([])
RH.append([])
temp.append([])
dewpt.append([])
windspd.append([])
winddir.append([])
with open(csv_file2, newline='') as f2_input:
csv_input2 = csv.reader(f2_input,delimiter=' ')
for j,row2 in enumerate(csv_input2):
if j == 0:
continue #skip header row
#fill arrays created above
windspd[count2].append(float(row2[5]))
winddir[count2].append(float(row2[6]))
gpheight[count2].append(float(row2[1]))
RH[count2].append(float(row2[4]))
temp[count2].append(float(row2[2]))
dewpt[count2].append(float(row2[3]))
count2 = count2 + 1
except ValueError as e:
pass
私はそれがそれぞれの新しいCSVファイルのための新しい配列を作成するために設定しています。 Iは、第三の(温度)カラム、
for n in range(0,len(temp)):
print(temp[0][n])
それは部分的にしかデータの列を印刷する印刷するときしかし、:また
-70.949997
-68.149994
-60.449997
-63.649994
-57.449997
-51.049988
-45.349991
-40.249985
-35.549988
-31.249985
-27.149994
-24.549988
-22.149994
-19.449997
-16.349976
-13.25
-11.049988
-8.949982
-6.75
-4.449982
-2.25
-0.049988
を、私は、関連する問題は、私は単に行うときことであると信じ
print(temp)
を印刷しますこの1つのcsvファイルに属するセクションであり、したがって1つの配列に存在するはずです。また、そこにはいけない、追加の空の配列が最後にあります。
同じことをしますが異なるcsvファイルを使用し、期待どおりに動作し、各ファイルのデータを空の配列を持たない新しい配列に分けるコードセクションを表示しています(表示していません)。私は助けていただきありがとうございます!
forループでlen(temp)をlen(temp [0])に変更することで少なくとも最初の問題を解決できます:-P –
ありがとう、@AbhishekJebaraj、少し助けてくれてありがとう!通常、多次元配列で作業するのは難しいです。 – ChelleS
問題が見つかりましたが、後で回答を提供する時間がかかります。 – ChelleS