计算熊猫系列中的特定值

时间:2020-05-24 16:03:41

标签: python pandas

我在python中有一个熊猫系列。 是否有一种功能/简便的方法来构造一个包含给定值的出现次数的序列?

为了演示,假设我有以下系列:1, 3, 1, 5, 10。 我想从以下列表中计算每个值有多少个外观:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]。 应该返回的序列是2, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1

3 个答案:

答案 0 :(得分:2)

我们做value_counts + reindex

l=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
l1=[1, 3, 1, 5, 10]
pd.Series(l1).value_counts().reindex(l,fill_value=0).tolist()
[2, 0, 1, 0, 1, 0, 0, 0, 0, 1]

答案 1 :(得分:1)

使用numpy.bincount

import numpy as np
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
s = pd.Series([1, 3, 1, 5, 10])

out = list(np.bincount(s)[[l]])
out
[2, 0, 1, 0, 1, 0, 0, 0, 0, 1]

答案 2 :(得分:1)

有地图:

s = pd.Series([1, 3, 1, 5, 10])
inp_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

pd.Series(inp_list).map(s.value_counts()).fillna(0).astype(int).tolist()

或使用get

列出伴奏
c = s.value_counts()
[c.get(i,0) for i in inp_list]
#or [*map(lambda x: c.get(x,0),inp_list)]

[2, 0, 1, 0, 1, 0, 0, 0, 0, 1]