0

私の問題では、2 つのファイルをデータセットに結合したい 2 つのファイルがあります。最初のファイルには、2 番目のファイルで ident として参照される暗黙の行番号があります。Janine は ident 1、jasmine は ident 2、judith は ident 3 です。

名前:

Name    Address
Janine  Unicorn Lane
Jasmine Sparkles Street
Judith  Rainbow Avenue

電話番号:

Number Ident
123    1
893    1
345    2 
746    3

これら 2 つのテーブルを組み合わせて、住所ごとに電話番号を取得するにはどうすればよいですか? 私がやりたいことは次のようなものです:

data[Adress='Unicorn Lane']['Number'].mean()

わかりました、この例はおそらく良くありません。しかし、私が必要なものを示しています。

4

1 に答える 1

1

おそらく、構造化配列を使用して何かを管理できます。

  • たとえば、2 つのファイルから2 つの構造化配列namesを作成します。おそらく. _ _ _numbersnp.genfromtxtdtype=Nonenp.genfromtxtnames=Truedelimiter="\t"

あなたは のようなものnamesを持っていdtype([('Name', '|S7'), ('Adress', '|S16')])ます。numbersdtype([('Number', '<i8'), ('Ident', '<i8')])

その後、選択を取得するには、派手なインデックスを作成するだけです。たとえば、namesforのエントリのインデックスが必要な場合"Unicorn Lane":

    (idx,) = np.nonzero(names['Adress']=="Unicorn Lane")

(これnp.nonzeroは、インデックスの配列である 1 つの要素を持つタプルを返す必要があります)。あなたの例では、idx = array([0])...)

これらのインデックスを識別子として使用できますが、識別子が 1 から始まる場合、インデックスは 0 から始まることに注意してください。したがって、見つけたインデックスnumbersに一致する を選択するには:Ident

numbers[numbers['Ident'] == idx+1]

(この例では、 ...にidx=array([0])対応していることを思い出してください)。Ident==1

idxが空でないことを確認する必要があります ( idx.size >0)。それ以外の場合idx+1も空になり、numbers['Ident']==idx+1に評価されFalse、NumPy ではnumbers[False]と同等numbers[0]です。

于 2012-09-19T16:57:00.537 に答える