【发布时间】:2021-09-11 18:24:17
【问题描述】:
我有一个看起来像这样的数据框
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。映射表:
| activityCode | activityName |
|---|---|
| 01 | Swimming |
| 02 | Swimming and football |
| 03 | Running |
| 04 | 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 列中找到了一行,而不是两行 ['Swimming', 'Football']。
0 [Swimming, Football]
1 Swimming
2 Running
3 Football
我应该如何编写代码来映射activityCode,以便创建具有不同activityName 但在02 的所有其他列中相同的两行?感谢您的宝贵时间!
【问题讨论】:
-
只有活动
02需要拆分还是其他活动?我们可以在and上拆分还是在'swimming and diving'上不应该拆分?
标签: python pandas dictionary mapping