目标: 获取嵌套在另一个类别中的类别计数的汇总表。
示例: 我有这个数据框:
# initialize data of lists.
data = {'Name': ['Tom', 'Tom', 'Tom', 'jack', 'jack', 'Mary', 'Mary', 'Mary', 'Jim', 'Jim'],
'Age': ['X', 'X', 'X', 'X', 'X','X','Y','Z', 'X', 'Y']}
# Create DataFrame
df = pd.DataFrame(data)
任务: 我想将 X、Y 和 Z 重新编码为简单、中等和困难,但与名称嵌套。例如,X很简单(它只有X),重复2次(汤姆和杰克)。中-难(玛丽重复 1 次)和简单-中度(吉姆重复 1 次)。
我有几个小时的时间来重新编码,我可以重新编码到另一列,但我只有 1 个类别(例如)对于第一行来说很容易。
如何“合并”行并获得我正在寻找的结果?
感谢您的帮助
IIUC,你可以试试这个:
df["Age"] = df["Age"].map({"X": "easy", "Y": "medium", "Z": "hard"})
out = df.groupby(["Name", "Age"]).size().unstack(fill_value=0)
out = out[["easy", "medium", "hard"]]
Age easy medium hard
Name
Jim 1 1 0
Mary 1 1 1
Tom 3 0 0
jack 2 0 0