Pandas,如何把值转换成索引(Values to Index)?

names = pd.Series(['张', '李', '包', '王', '李', '包', '曹', '曹', '张', '李', '包', '王'])
counts = names.value_counts()
print(counts)
### 结果
包    3
李    3
王    2
张    2
曹    2

有一批姓氏数据,如上可以统计出各个姓氏的个数。

然而我要这样的表,该怎么写?用counts[2]表示数量是2的姓氏列表,即['王', '张', '曹']

   0    1   2
2  王  张  曹
3  包  李
阅读 4.5k
2 个回答
d = pd.DataFrame()
d['a'] = counts.index
d['b'] = counts.values

result = d["a"].groupby(d["b"]).unique()

先把你的那个counts转换成字典,然后利用setdefault这个方法。

a_dict = {
    "包" : 3,
    "李" : 3,
    "王" : 2,
    "张" : 2,
    "曹" : 2,
}

result = {}
for k, v in a_dict.items():
    result.setdefault(v, []).append(k)

print(result)

>>> {3: ['包', '李'], 2: ['王', '张', '曹']}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题