[解決済み] csvモジュールでcsvファイルから特定の列を読み取る?
質問
csvファイルを解析して、特定の列だけからデータを抽出しようとしています。
csvの例です。
ID | Name | Address | City | State | Zip | Phone | OPEID | IPEDS |
10 | C... | 130 W.. | Mo.. | AL... | 3.. | 334.. | 01023 | 10063 |
特定のカラムだけを取り込みたいのですが、例えば
ID
,
Name
,
Zip
と
Phone
.
私が見たコードでは、特定のカラムを対応する番号で呼び出すことができると考えられています。
Name
に対応するのは
2
を使い、各行を反復して
row[2]
を実行すると、2列目のすべての項目が生成されます。しかし、そうはならない。
ここまでは、こんな感じです。
import sys, argparse, csv
from settings import *
# command arguments
parser = argparse.ArgumentParser(description='csv to postgres',\
fromfile_prefix_chars="@" )
parser.add_argument('file', help='csv file to import', action='store')
args = parser.parse_args()
csv_file = args.file
# open csv file
with open(csv_file, 'rb') as csvfile:
# get number of columns
for line in csvfile.readlines():
array = line.split(',')
first_item = array[0]
num_columns = len(array)
csvfile.seek(0)
reader = csv.reader(csvfile, delimiter=' ')
included_cols = [1, 2, 6, 7]
for row in reader:
content = list(row[i] for i in included_cols)
print content
そして、私はこれが各行について私が望む特定の列だけをプリントアウトすると期待しているのですが、そうではなく、私は最後の列だけを得ます。
どうすればいいですか?
このコードで最後のカラムを取得する唯一の方法は、printステートメントを含めない場合です。
で
あなたの
for
のループになります。
これは、あなたのコードの終わりである可能性が高いです。
for row in reader:
content = list(row[i] for i in included_cols)
print content
こうであってほしい。
for row in reader:
content = list(row[i] for i in included_cols)
print content
さて、ここまででミスをカバーできたので、この場をお借りして パンダ モジュールです。
Pandasはcsvファイルを扱うのに最適で、以下のコードでcsvを読み込み、列全体を変数に保存することができます。
import pandas as pd
df = pd.read_csv(csv_file)
saved_column = df.column_name #you can also use df['column_name']
というわけで、カラムの情報をすべて保存したい場合は、次のようにします。
Names
を変数に入れるだけです。
names = df.Names
素晴らしいモジュールなので、一度調べてみることをお勧めします。もし、何らかの理由でprint文が
for
のループで、やはり最後の列しか出力されなかったのですが、そんなことはないはずですが、私の推測が間違っていたら教えてください。あなたの投稿したコードはインデントの間違いが多いので、何がどこにあるべきか分かりにくかったのです。お役に立てれば幸いです。
関連
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?
-
[解決済み] pipで特定のバージョンのパッケージをインストールする
-
[解決済み] テキストファイルを文字列変数に読み込んで、改行を除去するには?
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] PostgreSQLからのPL/pgSQL出力をCSVファイルに保存する
-
[解決済み] pandasのDataFrameをCSVファイルに書き出す
-
[解決済み] NumPy の配列を csv ファイルにダンプする
-
[解決済み】Pythonで作成したCSVファイルの行間に空白行がある。
-
[解決済み] csvファイルの1列を抽出する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonを使ったオフィス自動化コード例
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?