Iは、次のCSVファイルのtest.CSVている場合:Pythonの使用試験パンダのデータフレームの値が別の列で示されるセットのメンバーシップである場合
C01,45,A,R
C02,123,H,I
Iが
として設定R
と
I
を定義有します
R=set(['R','E','D','N','P','H','K'])
I=set(['I','H','G','F','A','C','L','M','P','Q','S','T','V','W','Y'])
私は、文字列A
が(偽の)セットR
のメンバーである場合、文字列H
が(本当です)セットI
のメンバーであるかどうかをテストできるようにしたいです。私は次のスクリプトでこれを行うことを試みた:私はA in R
の同等か、むしろtable.columns[3] in table.columns[4]
を行うと、データの行ごとにTRUEまたはFALSEを返すしようとしています
#!/usr/bin/env python
import pandas as pd
I=set(['I','H','G','F','A','C','L','M','P','Q','S','T','V','W','Y'])
R=set(['R','E','D','N','P','H','K'])
with open(test.csv) as f:
table = pd.read_table(f, sep=',', header=None, lineterminator='\n')
table[table.columns[3]].astype(str).isin(table[table.columns[4]].astype(str))
すなわち。
唯一の問題は、最終行を使用して2行がTRUEを返すことです。私は
table[table.columns[3]].astype(str).isin(R)
に最終行を変更した場合それから私は正しいです
0 FALSE
1 TRUE
を取得します。それは私が行うときにセット名を正しく参照していないようです.isin(table[table.columns[3]].astype(str))
アイデア?
あなたがチェックしようとしているものは混乱しています。あなたは言い換えることができますか? –
ファイルから 'R'という文字をセット名として使用しますか?もしそうなら、あなたの最善の策は辞書を使うことです。 – ayhan
基本的にAは集合Rには含まれていませんが、Hは集合Iにあります。列3と4を比較するメンバーシップの結果を出力します – brucezepplin