Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从字典中筛选数据集键和值_Python_Pandas - Fatal编程技术网

Python 从字典中筛选数据集键和值

Python 从字典中筛选数据集键和值,python,pandas,Python,Pandas,假设我有一个pd.DataFrame: df = pd.DataFrame({'Press':['A', 'B', 'A', 'B', 'A'], 'Model':[1, 2 ,2 , 2, 1], 'Count':[1, 1 ,1 , 1, 1]}) 排序之后,我只想保持数据匹配somedict={'A':2,'B':2}。(按键=按下,值=型号) 是否有一种简单的方法只保留索引[1,2,3]?这里使用合并 s=pd

假设我有一个
pd.DataFrame

df = pd.DataFrame({'Press':['A', 'B', 'A', 'B', 'A'],
                   'Model':[1, 2 ,2 , 2, 1],
                   'Count':[1, 1 ,1 , 1, 1]})
排序之后,我只想保持数据匹配
somedict={'A':2,'B':2}
。(按键=按下,值=型号)


是否有一种简单的方法只保留索引
[1,2,3]

这里使用
合并

s=pd.Series(somedict).to_frame('Model').rename_axis('Press').reset_index()
yourdf=df.merge(s)
Out[231]: 
  Press  Model  Count
0     B      2      1
1     B      2      1
2     A      2      1

下面是使用
map
query
的另一种方法:

df.assign(match=df.Press.map(somedict)).query('Model==match').drop('match',1)


另一种方法是使用
agg
columns
Model
到一系列元组,并使用
somedict.items()
上的
isin
创建带有和
.loc
的掩码以切片所需行

m = df[['Press', 'Model']].agg(tuple, axis=1).isin(somedict.items())
df.loc[m]

Out[785]:
  Press  Model  Count
1  B     2      1
2  A     2      1
3  B     2      1

你能把你看到的和你想看到的贴出来吗?还有,到目前为止你尝试了什么?如果结果真的是一个dict,你可以加上s.th。比如:
somedict=pd.Series(yourdf.Model.values,index=yourdf.Press)。to_dict()
right?@skymon是的,添加dict比我的解决方案要好得多:
keys=[k+'-'+str(v)for k,v in somedict.items()
然后
df['key']=df['Press'+'-'+df['Model']。应用(lambda x:str(x))/code>最后
df[df['key'].isin(键)
我喜欢
map
query
。它看起来干净漂亮:)+1
m = df[['Press', 'Model']].agg(tuple, axis=1).isin(somedict.items())
df.loc[m]

Out[785]:
  Press  Model  Count
1  B     2      1
2  A     2      1
3  B     2      1