私は2列とランダムな量の行を持つ.csvファイルを読むPythonモジュールを作成しています。私はその後、列1> xまでこれらの行を調べます。この時点で、私はいくつかの計算を行うには、現在の行と前の行のデータが必要です。.csvファイルから行数を取得
現在、私は 'for i in range(rows)'を使用していますが、各CSVファイルには異なる量の行があるため、これはうまく動作しません。
コードは以下見ることができます:
rows = 73
for i in range(rows):
c_level = Strapping_Table[Tank_Number][i,0] # Current level
c_volume = Strapping_Table[Tank_Number][i,1] # Current volume
if c_level > level:
p_level = Strapping_Table[Tank_Number][i-1,0] # Previous level
p_volume = Strapping_Table[Tank_Number][i-1,1] # Previous volume
x = level - p_level # Intermediate values
if x < 0:
x = 0
y = c_level - p_level
z = c_volume - p_volume
volume = p_volume + ((x/y) * z)
return volume
配列で遊んで、私が使用した場合:
for row in Tank_data:
print row[c] # print column c
time.sleep(1)
これは、すべての行を通過しますが、私は、以前の行のデータにアクセスすることはできませんこの方法。
私は前の行と現在の行をすべてのループに格納することを考えましたが、これを行う前に、CSVの行の量を取得する簡単な方法があるかどうか疑問に思っていました。
インデックス付け 'Strapping_Table [Tank_Number] [i、0]'は、すでにnumpy配列またはpandasデータフレームとしてロードしていることを示しています。 '[i、0]'はPythonのリストや文字列のインデックスではありません。この 'Strapping_table'オブジェクトの型、形、dtypeに関する詳細を私たちに教えてください。これが既にロードされている場合、これは 'csv'の問題ではありません。配列1です。 – hpaulj
すでにデータを配列にロードしている場合、そのサイズで推測する必要はありません。 'arr.shape [0]'は2次元配列の 'rows'の数です。おそらくループなしでこの計算を行うことができます - 数回の配列操作だけです。しかし、私たちはもっと詳細が必要です。 – hpaulj
申し訳ありません、はい、私は混乱していました。私はすでに 'numpy'の' genfromtxt'を使って配列に変換しました。 'arr.shape [0]'は役に立ちましたが、前の行と現在の行を同時に格納するだけでした。 しかし、 'arr.shape'は私が開発しているいくつかのモジュールで私を助けてくれるはずです。ありがとう。 –