是否有一种函数(或更好的方法)使用Pandas中具有相似值的两列来聚合计数值的数量?

时间:2019-11-03 17:17:56

标签: python pandas

如图所示,

  • 两个列具有相同类型的数据。
  • Type1 是神奇宝贝的主要类型, type2 是神奇宝贝的辅助类型。
  • 地面毒物相同的类型可以出现在type1中 列以及typ2列
  • 例如对于第一行 ground type1 ,但对于第二行和 第三行 ground type2

现在,我想做的就是获得所有具有相同类型的宠物小精灵,而不管type1还是type2 ,例如,这里的地面数为5,毒物为4,依此类推(即使类型2中出现4个接地,类型1中出现1个接地)

dataset

type2_count = {}
type_count = {}
for i in type1:
    type_count[i]=type_count.get(i,0)+1
for i in type2:
    type_count[i]=type_count.get(i,0)+1
print(type_count)

我期望每种口袋妖怪的数量(无论是1型还是2型)

2 个答案:

答案 0 :(得分:1)

IIUC,您可以使用

# with numpy
type_counts = np.hstack(df[['type1', 'type2']].values)
type_counts  = dict(zip(*np.unique(type_counts , return_counts=True)))
print(type_counts)

# using pandas
print(df['type1'].append(df['type2']).value_counts().to_dict())

{'ground': 5, 'poison': 5, ....}

答案 1 :(得分:1)

您可以尝试以下方法:

pd.Series(df.type1.to_list() + df.type2.to_list()).value_counts()