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