Pandas Data Series按级别获取值

时间:2014-12-04 14:35:34

标签: python pandas

我正在处理像以下

这样的熊猫系列
  

x = pd.Series([1,2,1,4,2,6,7,8,1,1],index = [' a',' b&#39 ,' a'' c',''' d',' e',' ; f',' g',' g'])

索引不是唯一的,但总会映射到相同的值,例如' a'始终对应于' 1'在我的示例中,b始终映射到' 2'所以,如果我想看看哪些值对应于每个索引值,我只需要编写

x.mean(level=0)
a    1
b    2
c    4
d    6
e    7
f    8
g    1
dtype: int64

当值是字符串时出现困难,我无法调用' mean()'在字符串上但我还是想在这种情况下返回类似的列表。有什么想法可以做到这一点吗?

  

x = pd.Series([' 1',' 2',' 1',' 4',' 2',' 6',' 7',' 8',' 1',' 1'] ,index = [' a',' b',' a',' c',' b',& #39; d',' e',' f',' g',' g'])

2 个答案:

答案 0 :(得分:1)

只要您的索引直接映射到值,您就可以简单地调用drop_duplicates

In [83]:

x.drop_duplicates()
Out[83]:
a    1
b    2
c    4
d    6
e    7
f    8
dtype: int64

示例:

In [86]:

x = pd.Series(['XX', 'hello', 'XX', '4', 'hello', '6', '7', '8'], index=['a', 'b', 'a', 'c', 'b', 'd', 'e', 'f'])
x
Out[86]:
a       XX
b    hello
a       XX
c        4
b    hello
d        6
e        7
f        8
dtype: object
In [87]:

x.drop_duplicates()
Out[87]:
a       XX
b    hello
c        4
d        6
e        7
f        8
dtype: object

编辑一个回旋方法是重置索引,使索引值为新列,删除重复项,然后再次设置索引:

In [100]:

x.reset_index().drop_duplicates().set_index('index')
Out[100]:
       0
index   
a      1
b      2
c      4
d      6
e      7
f      8
g      1

答案 1 :(得分:1)

pandas.Series.values是numpy ndarray。也许做一个values.astype(int)会解决你的问题吗?