異なる列に条件がある.csvファイルをループします

Informatico_Health

この形式の大きな.csvファイルがあります。

「文字列1」、「文字列2」、「文字列3」、「文字列4」、「文字列5」、「文字列6」など

次の列にリンクされている限り、列から情報を抽出することに興味があります。

より明確な例を示すために、列番号3と4がチームによって形成され、それらがホストする相手を表すとします(列3はローカルチームです)。

「First」、「Result」、「Philadelphia」、「Miami」など
「Second」、「Result」、「Dallas」、「Cleveland」など
「Third」、「Result」、「Miami」、「Cleveland」、など
「第4」、「結果」、「クリーブランド」、「マイアミ」など
「第5」、「結果」、「ダラス」、「フィラデルフィア」など
「第6」、「結果」、「クリーブランド」、「ダラス」など
「第7」、「結果」、「マイアミ」、「フィラデルフィア」など
「第8」、「結果」、「フィラデルフィア」、「マイアミ」など
「第9」、「結果」、「クリーブランド」、 「マイアミ」など

そして、私は彼らがホストするチームからなるリストを繰り返しなしで取得したい

Cleveland hosts
Dallas
Miami

Dallas hosts
Cleveland
Philadelphia

Miami hosts
Cleveland
Philadelphia

Philadelphia hosts
Miami

その後、両方のパターンに関するすべての行をファイルに書き込みたいと思います。これは、クリーブランドとマイアミの一致を確認したい場合は、次のような.csvを作成したいということです。

「第3」、「結果」、「マイアミ」、「クリーブランド」など
「第4」、「結果」、「クリーブランド」、「マイアミ」など
「第9」、「結果」、「クリーブランド」、「マイアミ」、等

次のコードを使用して、1つの列を読み取り、すべての一意の要素を辞書に保存して、後でそこから単語を選択できるようにします。列番号4でも同じことができ、パラメーターWanted_Columnの値を3に変更してコードを繰り返すことができます。

import csv
from collections import Counter, defaultdict, OrderedDict

Var = 1 
Wanted_Column = 2 # Col I want to analyze 

with open('file.csv', "rb") as inputfile:
    data = csv.reader(inputfile)
    seen = defaultdict(set)

    countd = Counter(
        row[Wanted_Column]
        for row in data
        if row[Wanted_Column] and row[Wanted_Column] not in seen[row[Var]] and not seen[row[Var]].add(row[Wanted_Column])
    )

y = OrderedDict(sorted(countd.items(), key = lambda t: t[0]))

for line in y:
    print line

結果は、

Cleveland
Dallas
Miami 
Philadelphia 

だから、私の質問は、二重の条件を持ち、私が露出した方法で要素を表示するために何を追加する必要があるかということです。

その後、別のファイルに行を書き込むために、このコードを取得しました。

look_for = set([ELEMENT IN DICTIONARY])

with open('file.csv','rb') as inf, open('output_file.csv','wb') as outf:
    incsv = csv.reader(inf, delimiter=',')
    outcsv = csv.writer(outf, delimiter=',')

    outcsv.writerows(row for row in incsv if row[Wanted_column] in look_for) 

そして、1つの要素だけでうまく機能しますが、もちろん、前の条件が明確に定義されていないため、希望する結果を得るために何を変更すればよいかわかりません。

ゲノム

セットの辞書を使用して、ホスティングチームと一意の訪問チームを追跡できます。これが例です。

import csv

# load the csv file
rows = [r for r in csv.reader(file('sample.csv','r'))]

# order preservation list
preserve_order = []

# track the schedule from the hosting team's point of view
hosting_teams = {}

# change the wanted column here
wanted_column = 3

for row in rows:
    # strip out the double quotes
    row = [c.replace('"','') for c in row] 

    the_host = row[2]
    the_order = row[0]

    preserve_order.append(the_order)

    # create a dictionary with a unique set of visiting teams
    host_schedule = hosting_teams.setdefault(the_host,set([]))

    # add the team visit
    visiting_team = row[wanted_column]
    host_schedule.add((visiting_team,the_order))



output = []
for hosting_team,host_schedule in hosting_teams.items():
    for visiting_team,the_order in host_schedule:
        output.append([the_order,"Result",hosting_team,visiting_team])    

output.sort(key=lambda x:preserve_order.index(x[0]))

csv.writer(file('output.csv','wb')).writerows(output)    

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

F#は異なる列のCSVファイルをマージします

分類Dev

ファイル名にパターンを含むread.csvファイルをループします

分類Dev

ループごとに異なる.htmファイルを作成します

分類Dev

複数のcsvファイルをxlsxファイルに変換しますが、PowerShellを使用して異なるシートにします

分類Dev

複数のcsvファイルを異なるデータフレームとしてインポートするためにループする方法とインポートされた各データフレームには、ファイル名または少なくともその一部があります

分類Dev

エントリが異なるが列が 1 つあるフォルダ内の異なる csv ファイルをマージする方法は?

分類Dev

Windows は同じサブフォルダーにあるが、異なるフォルダーにあるファイルをコピーします。

分類Dev

リクエストを取得するためにcsvファイルの列をループします

分類Dev

データが各ファイルの異なる列にある可能性がある複数の.xlsxファイルを操作する

分類Dev

csvファイルをループし、それぞれの新しいcsvにtail-nを出力します

分類Dev

kdb +:テーブルをcsvファイルに保存します

分類Dev

シェルスクリプト:2行を異なる行として印刷しますが、csvファイルの同じセルに印刷します

分類Dev

2つの異なるCSVファイルの2つの列を比較し、出力をマージします

分類Dev

PYTHONディレクトリにある複数のファイルXMLを解析し、CSVファイルにデータをアップロードします

分類Dev

Rをループして、特定の列と残りの合計を異なる.csvファイルから取得します

分類Dev

美しいスープでCSVファイルを作成する

分類Dev

美しいスープでCSVファイルを作成する

分類Dev

列の順序が異なるcsvファイルをマージして重複を削除する

分類Dev

配列データをcsvファイルに配置します

分類Dev

csvファイルをhsqldbにインポートします

分類Dev

出力をCSVファイルにインポートします

分類Dev

PHPに異なるgroup_id番号があるたびに、配列をグループに分割します

分類Dev

csvファイルをxmlファイルに変換するときにエラーが発生します

分類Dev

CSVファイルを取得し、列ヘッダーに基づいて個別のファイルに分割する必要があります[JAVA]

分類Dev

CSVファイルを取得し、列ヘッダーに基づいて個別のファイルに分割する必要があります[JAVA]

分類Dev

pandasdfをいくつかの異なるCSVファイルに保存します

分類Dev

Python-csvファイルとグループ番号を列ごとにインポートします

分類Dev

行数の異なる2つのテキストファイルをcsvファイルに結合します

分類Dev

新しいファイルには異なる権限があります

Related 関連記事

  1. 1

    F#は異なる列のCSVファイルをマージします

  2. 2

    ファイル名にパターンを含むread.csvファイルをループします

  3. 3

    ループごとに異なる.htmファイルを作成します

  4. 4

    複数のcsvファイルをxlsxファイルに変換しますが、PowerShellを使用して異なるシートにします

  5. 5

    複数のcsvファイルを異なるデータフレームとしてインポートするためにループする方法とインポートされた各データフレームには、ファイル名または少なくともその一部があります

  6. 6

    エントリが異なるが列が 1 つあるフォルダ内の異なる csv ファイルをマージする方法は?

  7. 7

    Windows は同じサブフォルダーにあるが、異なるフォルダーにあるファイルをコピーします。

  8. 8

    リクエストを取得するためにcsvファイルの列をループします

  9. 9

    データが各ファイルの異なる列にある可能性がある複数の.xlsxファイルを操作する

  10. 10

    csvファイルをループし、それぞれの新しいcsvにtail-nを出力します

  11. 11

    kdb +:テーブルをcsvファイルに保存します

  12. 12

    シェルスクリプト:2行を異なる行として印刷しますが、csvファイルの同じセルに印刷します

  13. 13

    2つの異なるCSVファイルの2つの列を比較し、出力をマージします

  14. 14

    PYTHONディレクトリにある複数のファイルXMLを解析し、CSVファイルにデータをアップロードします

  15. 15

    Rをループして、特定の列と残りの合計を異なる.csvファイルから取得します

  16. 16

    美しいスープでCSVファイルを作成する

  17. 17

    美しいスープでCSVファイルを作成する

  18. 18

    列の順序が異なるcsvファイルをマージして重複を削除する

  19. 19

    配列データをcsvファイルに配置します

  20. 20

    csvファイルをhsqldbにインポートします

  21. 21

    出力をCSVファイルにインポートします

  22. 22

    PHPに異なるgroup_id番号があるたびに、配列をグループに分割します

  23. 23

    csvファイルをxmlファイルに変換するときにエラーが発生します

  24. 24

    CSVファイルを取得し、列ヘッダーに基づいて個別のファイルに分割する必要があります[JAVA]

  25. 25

    CSVファイルを取得し、列ヘッダーに基づいて個別のファイルに分割する必要があります[JAVA]

  26. 26

    pandasdfをいくつかの異なるCSVファイルに保存します

  27. 27

    Python-csvファイルとグループ番号を列ごとにインポートします

  28. 28

    行数の異なる2つのテキストファイルをcsvファイルに結合します

  29. 29

    新しいファイルには異なる権限があります

ホットタグ

アーカイブ