ループ内の複数の列でデータフレーム条件をマスクしたいとします。私はこのような何かをしようとしています:複数の列条件でのDataFrameのマスキング - ループ内
dfs = []
val_dict = {0: 'a', 1: 'b', 2: 'c', 3: 'd'}
for i in range(4):
items = [val_dict[i] for i in range(i+1)]
df_ = df[(df['0'] == items[0]) & (df['1'] == items[1]) & ... ]
dfs.append(df_)
は何の項目[1]の要素はないだろうので、私は上記に書いた第2の条件は、ループの最初の反復のために存在しませんのでご注意ください。ここで
は、あなたがテストすることが歓迎されているサンプルデータフレームです:
df = pd.DataFrame({'0': ['a']*3 + ['b']*3 + ['c']*3,
'1': ['a']*3 + ['b']*6,
'2': ['b']*4 + ['c']*5,
'3': ['c']*5 + ['d']*4})
私は避けるために非常に多くのことを伝えたい用途eval
が出ている唯一のソリューション。
おかげで、これは私が達成しようとしています何をしません。私は 'DFをマスクアイデア最初のループではdf [(df ['0'] == items [0])&(df ['1'] == items)[[df ['0'] == items [0] [df ['0'] == items [0])&(df ['1'] == items [1])&(df ['2']) == items [2])] '第3回など...あなたのループは内部に依存関係がないので、毎回同じことをします! – AlexG
申し訳ありませんが、私はあなたが行っていたことをかなり理解していませんでした。 – JaminSore
Brilliant!ここで重要なのは、マスクがSeriesオブジェクトであることを覚えておき、それを保持する変数を定義することです – AlexG