パンダシリーズのベクトル化されたルックアップから辞書へ

トーマス・マシュー

問題文:

pandasデータフレーム列シリーズは、same_group既存の2つの列の値に従ってブール値から作成する必要がrowありcolます。行全体の両方のセルのディクショナリ内の値が類似している場合(交差する値)はTrueを表示し、membershipsそうでない場合(交差する値はない)はFalseを表示する必要がありますこれをベクトル化された方法で行うにはどうすればよいですか(applyを使用しない)?

セットアップ:

import pandas as pd
import numpy as np 
n = np.nan
memberships = {
    'a':['vowel'],
    'b':['consonant'],
    'c':['consonant'],
    'd':['consonant'],
    'e':['vowel'],
    'y':['consonant', 'vowel']
}

congruent = pd.DataFrame.from_dict(  
         {'row': ['a','b','c','d','e','y'],
            'a': [ n, -.8,-.6,-.3, .8, .01],
            'b': [-.8,  n, .5, .7,-.9, .01],
            'c': [-.6, .5,  n, .3, .1, .01],
            'd': [-.3, .7, .3,  n, .2, .01],
            'e': [ .8,-.9, .1, .2,  n, .01],
            'y': [ .01, .01, .01, .01,  .01, n],
       }).set_index('row')
congruent.columns.names = ['col']

データフレームcsのスニペット

cs = congruent.stack().to_frame()
cs.columns = ['score']
cs.reset_index(inplace=True)
cs.head(6)

スタックされたデータフレームcsのスニペット

望ましい目標:

追加されたパンダ列の最高の図面

辞書での検索に基づいてこの新しい列を作成するにはどうすればよいですか?

同等ではなく、共通部分を見つけようとしていることに注意してください。たとえば、行4はasame_groupが1である必要があります。これは、ayが両方とも母音であるためです(y「時々母音」であるため、子音と母音のグループに属します)。

piRSquared
# create a series to make it convenient to map
# make each member a set so I can intersect later
lkp = pd.Series(memberships).apply(set)

# get number of rows and columns
# map the sets to column and row indices
n, m = congruent.shape
c = congruent.columns.to_series().map(lkp).values
r = congruent.index.to_series().map(lkp).values

print(c)
[{'vowel'} {'consonant'} {'consonant'} {'consonant'} {'vowel'}
 {'consonant', 'vowel'}]

print(r)
[{'vowel'} {'consonant'} {'consonant'} {'consonant'} {'vowel'}
 {'consonant', 'vowel'}]

# use np.repeat, np.tile, zip to create cartesian product
# this should match index after stacking
# apply set intersection for each pair
# empty sets are False, otherwise True
same = [
    bool(set.intersection(*tup))
    for tup in zip(np.repeat(r, m), np.tile(c, n))
]

# use dropna=False to ensure we maintain the
# cartesian product I was expecting
# then slice with boolean list I created
# and dropna
congruent.stack(dropna=False)[same].dropna()

row  col
a    e      0.80
     y      0.01
b    c      0.50
     d      0.70
     y      0.01
c    b      0.50
     d      0.30
     y      0.01
d    b      0.70
     c      0.30
     y      0.01
e    a      0.80
     y      0.01
y    a      0.01
     b      0.01
     c      0.01
     d      0.01
     e      0.01
dtype: float64

欲しい結果を生み出す

congruent.stack(dropna=False).reset_index(name='Score') \
    .assign(same_group=np.array(same).astype(int)).dropna()

ここに画像の説明を入力してください

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

マップ内のパーティション化されたベクトルへのアクセス

分類Dev

パンダデータフレームのベクトル化されたルックアップ

分類Dev

パンダの量子化されたグループ化されたシリーズの値へのアクセス

分類Dev

キーのリストを使用した辞書からの高速辞書ルックアップ

分類Dev

パンダシリーズのベクトル化されたテキスト処理

分類Dev

パンダのベクトル化されたドット積?

分類Dev

サンドボックス化されたアプリのダウンロードフォルダーへの書き込み

分類Dev

辞書/要約されたDataFrameからのパンダシリーズ

分類Dev

パンダのグループ化されたリストの列へのアクセス

分類Dev

グループ化されたパンダデータフレームからネストされた辞書

分類Dev

Ubuntu16.04でシェルスクリプトからインストールされたrubygemパッケージにアクセスする際の問題

分類Dev

グループ化されたパンダシリーズからウィスカープロットを作成する

分類Dev

辞書キーが列ラベルであるマルチインデックスデータフレームへのネストされた辞書

分類Dev

辞書ルックアップでforループをベクトル化する

分類Dev

パンダのマルチインデックスピボットテーブルが辞書のリストに変換されました

分類Dev

Ractiveイベントは、トリプルスタッシュ構文でレンダリングされたマークアップで機能しますか?

分類Dev

ApacheKafka-単一のコンシューマーによって同じトピックの異なるパーティションからメッセージをプルするために使用されるアルゴリズム/戦略

分類Dev

ネストされた辞書へのパンダマルチインデックスデータフレーム

分類Dev

Google Oauth2.0 Webアプリケーションの「承認されたリダイレクトURI」は、パブリックトップレベルドメイン(.comや.orgなど)で終わる必要がありますか?

分類Dev

エスケープされたプロパティを使用したJSONからJavaオブジェクトへの逆シリアル化

分類Dev

エスケープされたプロパティを使用したJSONからJavaオブジェクトへの逆シリアル化

分類Dev

リンクされたjavascriptファイルから実行するモーダルポップアップスクリプトの取得

分類Dev

辞書の (json シリアル化された) リストから「u」プレフィックスを削除するにはどうすればよいですか?

分類Dev

シンボリックリンクされた共有ホストフォルダーへのVirtualboxUbuntu18.04パーミッションの問題

分類Dev

シンボリックリンクされた共有ホストフォルダーへのVirtualboxUbuntu18.04パーミッションの問題

分類Dev

Google Chromeバージョン84.0.4147.125(公式ビルド)(64ビット)サードパーティからのコールバック関数でリダイレクトするとアプリケーションセッションが破壊される

分類Dev

データバインドされたチェックリストからのjQueryルックアップ

分類Dev

パンダは、インデックスが与えられたシリーズの「インデックス」ラベルを取得します

分類Dev

トップレベルでグループ化されたマルチインデックスをプロットするパンダグループ

Related 関連記事

  1. 1

    マップ内のパーティション化されたベクトルへのアクセス

  2. 2

    パンダデータフレームのベクトル化されたルックアップ

  3. 3

    パンダの量子化されたグループ化されたシリーズの値へのアクセス

  4. 4

    キーのリストを使用した辞書からの高速辞書ルックアップ

  5. 5

    パンダシリーズのベクトル化されたテキスト処理

  6. 6

    パンダのベクトル化されたドット積?

  7. 7

    サンドボックス化されたアプリのダウンロードフォルダーへの書き込み

  8. 8

    辞書/要約されたDataFrameからのパンダシリーズ

  9. 9

    パンダのグループ化されたリストの列へのアクセス

  10. 10

    グループ化されたパンダデータフレームからネストされた辞書

  11. 11

    Ubuntu16.04でシェルスクリプトからインストールされたrubygemパッケージにアクセスする際の問題

  12. 12

    グループ化されたパンダシリーズからウィスカープロットを作成する

  13. 13

    辞書キーが列ラベルであるマルチインデックスデータフレームへのネストされた辞書

  14. 14

    辞書ルックアップでforループをベクトル化する

  15. 15

    パンダのマルチインデックスピボットテーブルが辞書のリストに変換されました

  16. 16

    Ractiveイベントは、トリプルスタッシュ構文でレンダリングされたマークアップで機能しますか?

  17. 17

    ApacheKafka-単一のコンシューマーによって同じトピックの異なるパーティションからメッセージをプルするために使用されるアルゴリズム/戦略

  18. 18

    ネストされた辞書へのパンダマルチインデックスデータフレーム

  19. 19

    Google Oauth2.0 Webアプリケーションの「承認されたリダイレクトURI」は、パブリックトップレベルドメイン(.comや.orgなど)で終わる必要がありますか?

  20. 20

    エスケープされたプロパティを使用したJSONからJavaオブジェクトへの逆シリアル化

  21. 21

    エスケープされたプロパティを使用したJSONからJavaオブジェクトへの逆シリアル化

  22. 22

    リンクされたjavascriptファイルから実行するモーダルポップアップスクリプトの取得

  23. 23

    辞書の (json シリアル化された) リストから「u」プレフィックスを削除するにはどうすればよいですか?

  24. 24

    シンボリックリンクされた共有ホストフォルダーへのVirtualboxUbuntu18.04パーミッションの問題

  25. 25

    シンボリックリンクされた共有ホストフォルダーへのVirtualboxUbuntu18.04パーミッションの問題

  26. 26

    Google Chromeバージョン84.0.4147.125(公式ビルド)(64ビット)サードパーティからのコールバック関数でリダイレクトするとアプリケーションセッションが破壊される

  27. 27

    データバインドされたチェックリストからのjQueryルックアップ

  28. 28

    パンダは、インデックスが与えられたシリーズの「インデックス」ラベルを取得します

  29. 29

    トップレベルでグループ化されたマルチインデックスをプロットするパンダグループ

ホットタグ

アーカイブ