我有一个像这样的数据框
df = pd.DataFrame([[1, '02', 3], [2, '01', 5], [3, '03', 8], [4, '04', 1]], columns=['Student', 'activityCode', 'pts'])
Student activityCode pts
0 1 02 3
1 2 01 5
2 3 03 8
3 4 04 1
我想将activityCode映射到activityName,并创建一个表,其中包含在学生和activityCode级别聚合的pts。但棘手的是02对应于swimming and football
。映射表:
我希望输出是
Student activityName pts
0 1 Swimming 3
1 1 Football 3
2 2 Swimming 5
3 3 Running 8
4 4 Football 1
我试过了
df['activityCode'].map({'01': 'Swimming', '02':['Swimming', 'Football'], '03':'Running', '04':'Football'})
但是很明显,我在activityName列中得到了一行['sweeling','Football'],而不是两行
0 [Swimming, Football]
1 Swimming
2 Running
3 Football
我应该如何编写代码来映射activityCode
,以便它在02的所有其他列中创建具有不同activityName
但相同的两行?谢谢你抽出时间
只需分解
activityName
列这将返回一个数据帧,其中对于作为列表的
activityName
中的任何单元格,其行数与该列表中的元素数相同,每个元素一行,其他行中的值与其在原始行中的值相同。对于activityName
值不是列表的任何行,它们将按原样存在于新的数据帧中相关问题 更多 >
编程相关推荐