您好我正在嘗試過濾掉另一個字典中包含的 df 列
這是示例:
import random
df = pd.DataFrame({'type': random.choice(['222', '44']), #let size be 10k for example
'method': random.choice(['open', 'close'])})
filter_dict = {'type': {0: ['44']}, 'method': {0: ['open', 'closed']}}
它作業正常with df[df['method'].isin(filter_dict['method'][0])]
當我試影像這樣過濾下一列時,我得到一個空資料框
df[df['type'].isin(filter_dict['type'][0])]
idk 為什么會這樣,請回答
熊貓版本是 0.23.4
uj5u.com熱心網友回復:
你的例子是無效的(你有一個唯一的值random.choice,因此熊貓錯誤),但是,代碼按預期作業:
import numpy as np
np.random.seed(0)
df = pd.DataFrame({'type': np.random.choice(['222', '44'], size=20),
'method': np.random.choice(['open', 'close'], size=20)})
filter_dict = {'type': {0: ['44']}, 'method': {0: ['open', 'closed']}}
df[df['type'].isin(filter_dict['type'][0])]
輸出:
type method
1 44 close
2 44 close
4 44 open
5 44 close
6 44 close
7 44 close
8 44 close
9 44 open
10 44 close
13 44 open
19 44 open
如果要測驗所有列的條件:
mask = np.all([df[c].isin(filter_dict[c][0]) for c in df.columns], axis=0)
df[mask]
輸出:
type method
4 44 open
9 44 open
13 44 open
19 44 open
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/450688.html
上一篇:熊貓資料框列印重復值
下一篇:洗掉熊貓資料框中的空列
