CSVファイルをボトムアップから読み込み、データをテキストファイルに書き込む必要があります。このファイルには、顧客、製品、場所のさまざまな組み合わせに関する情報があります。ただし、必要な情報がすべて含まれているわけではありません。行が見つからない場合は、数量は0です。このファイルは膨大なものになる可能性があります。そのため、私はそれを書き直したり、追加のリストを使用したりする必要はありません。csvファイルを逆順に読み込んでいる間に前の行を読む
私がしたいのは、ファイルを逆方向に読み取っている間に、必要なものをPeriod_idsと私のリストからcsvファイルの各組み合わせのすべてのIDと比較して、IDがない場合は前の行ファイルからのidがリストの要求されたidと同じになるまで(ps。私はforループではできませんが、逆の順序でファイルを読み込む方法がわかりません。私がしなければならないことをする)。所与のデータと必要な結果(緑色は各組み合わせの開始点)を添付した画像を参照してください。下のメソッド(私はこの例では短くしました)は正確には正しくありません。なぜなら、csvファイルからすべての行を取得しますが、欠落している行はないからです。このロジックの助けを借りてありがとうございます(私はまた、パンダのようなライブラリを使わずに何らかの形でこの既存のメソッドを変更することを好むでしょう:)ありがとう!
デフ)(read_file_in_reverse: #...いくつかのコード
# Required ids.
all_required_ids = [412, 411, 410, 409, 408, 407, 406, 405]
# Needed to count period ids.
count_index_for_periodid = 0
# Read csv file.
with open(('.\myFile.csv'), 'rb') as f:
time_csv = csv.reader(f)
# Read the file in reversed order.
for line in reversed(list(time_csv)):
# ... some code
###### Get quantities from the file.
for col_num in range(5, 7):
# ... code to get items
### quantity
# If next id is not equal to the next required id.
if str(next_id) != str(all_required_ids[count_index_for_periodid]):
list_qty.append(0)
else:
qty = line[col_num]
list_quantity.append(qty)
# Should add another condition here
count_index_for_periodid += 1
スプレッドシートのスクリーンショットではなく、例csvsをここに貼り付けることはできますか?また、それはかなりのコードです。あなたはそれを重要な部分だけを扱っている例に託すことができますか?良いものに行くために沼を歩き回る必要はありません。 – tdelaney
ありがとう、コードを更新しました。しかし、私のファイルをホストに挿入することに問題があります。 –