Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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_Python 3.x_Pandas - Fatal编程技术网

Python 映射熊猫系列以列出成员资格

Python 映射熊猫系列以列出成员资格,python,python-3.x,pandas,Python,Python 3.x,Pandas,假设我有以下系列,dtype('O'): 和以下列表(组): 我想将s映射到一个基于组成员身份的新系列,在没有成员身份的情况下填充np.nan。结果: res Out[17]: 0 group1 1 group1 2 group2 3 group2 4 nan dtype: object 我正在寻找一种比使用重复的np更具python风格的方法。其中: res = pd.Series(np.where(s.isin(group1), 'group1',

假设我有以下系列,
dtype('O')

和以下列表(组):

我想将
s
映射到一个基于组成员身份的新系列,在没有成员身份的情况下填充
np.nan
。结果:

res
Out[17]: 
0    group1
1    group1
2    group2
3    group2
4       nan
dtype: object
我正在寻找一种比使用重复的
np更具python风格的方法。其中

res = pd.Series(np.where(s.isin(group1), 'group1',
                         np.where(s.isin(group2), 'group2',
                         np.where(s.isin(group3), 'group3',
                         np.nan))))
理想情况下,这意味着要将列表集合指定为单个iterable,因为在我真正的问题中,我有更多的组
res
可以是数据类型
O
categorical

我所尝试的:

  • 上面的例子使用了
    np.where
    ,虽然有效,但过于冗长
  • 创建
    dict(zip(['group1','group2','group3'],[group1,group2,group3])
    。卡在那里
我有一种感觉,这可能是一个重复,但我无法找到在第一次尝试


注意:组列表总是不相交的。

我认为您需要重新构造映射

从您的dict开始(
dict(zip(['group1','group2','group3',[group1,group2,group3]))
):

假设列表不相交,则相反的列表为:

reversed_map = {v: k for k, lst in d.items() for v in lst}
现在,您可以使用地图:

s.map(reversed_map)
Out[19]: 
0    group1
1    group1
2    group2
3    group2
4       NaN
dtype: object

我认为您需要重新构建映射

从您的dict开始(
dict(zip(['group1','group2','group3',[group1,group2,group3]))
):

假设列表不相交,则相反的列表为:

reversed_map = {v: k for k, lst in d.items() for v in lst}
现在,您可以使用地图:

s.map(reversed_map)
Out[19]: 
0    group1
1    group1
2    group2
3    group2
4       NaN
dtype: object

我之前没有机会回复你的评论。我认为你最好的办法是在开始时构建映射,但我不知道你是如何得到这些列表的。在任何情况下,如果效率是一个问题,请随时接受。如果问题没有解决,人们更有可能研究其他选择。我之前没有机会回复你的评论。我认为你最好的办法是在开始时构建映射,但我不知道你是如何得到这些列表的。在任何情况下,如果效率是一个问题,请随时接受。如果问题没有解决,人们更有可能研究替代方案。
s.map(reversed_map)
Out[19]: 
0    group1
1    group1
2    group2
3    group2
4       NaN
dtype: object