0

各株(ファイル)の計算データを個別にループし、計算値が特定の数値(この場合は731)より大きいかどうかを判断するために、CSVファイルから数値データをロードしようとしています。ただし、私が使用している方法では、Pythonでリストを繰り返し、例として数字( '500')を引用符で囲んで文字列にするようです。残念ながら、最後の「if」ステートメントはこれを処理できず、その結果、適切に機能していないようです。何が起こっているのか、そしてなぜPythonがこのコードを正しく実行するために何をする必要があるのか​​、私にはわかりません。

    import csv
    stocks = ['JPM','PG','GOOG','KO']
    for stock in stocks:
        Data = open("%sMin.csv" % (stock), 'r')
        stockdata = []
        for row in Data:
           stockdata.extend(map(float, row.strip().split(',')))
           stockdata.append(row.strip().split(',')[0])
        if any(x > 731 for x in stockdata):
            print "%s Minimum" % (stock)
4

1 に答える 1

1

現在、各行のすべての列をリストに追加し、その最後に、行の最初の列を再度追加していますか?では、すべての列が重要ですか、それとも最初の列だけですか?

また、比較の前にファイルからすべてのデータをロードしていますが、どこでも使用していないように見えるので、もっと早くショートカットできると思います...

私が正しく理解していれば、あなたのコードはこれであるはずです(または最初の列だけを比較するように修正してください)。

基本的にこれを書いていますか?

import csv

STOCKS = ['JPM', 'PG', 'GOOG', 'KO']

for stock in STOCKS:
    with open('{}Min.csv'.format(stock)) as csvin:
        for row in csv.reader(csvin):
            if any(col > 731 for col in map(float, row)):
                print '{} minimum'.format(stock)
                break
于 2012-07-16T06:55:09.510 に答える