我是Pandas的新手,试图了解如何修改特定列具有重复值的行的子集,并根据对这些重复项的条件检查来决定要更改哪些行。
说:“我有一个这样的数据框:
Class Length Head Teacher Premium Course
0 Maths Medium Mr. Bloggs Yes
1 English Short Mr. Plum Yes
2 English Long Mrs. Green Yes
3 English Medium Mr. Top Yes
4 Science Long Mrs. Blue Yes
5 Science Long Mr. Red Yes
6 ...
字符串
只要有重复的班级,我就想用最长班级的班主任替换所有重复班级的教师,并删除所有不是最长班级的重复班级的高级课程值。如果重复的课程都是相同的长度,那么只需从第一个重复的老师,而高级课程则相反。
Class Length Head Teacher Premium Course
0 Maths Medium Mr. Bloggs Yes
1 English Short Mrs. Green
2 English Long Mrs. Green Yes
3 English Medium Mrs. Green
4 Science Long Mrs. Blue Yes
5 Science Long Mrs. Blue
6 ...
型
在Python中,我通常会使用循环,条件语句等,并在内存中构建一个新的列表。但我在试图找出Pandas的最佳方法。
我一直在研究 duplicated 和 groupby 函数,但一直无法找到解决方案。任何建议或帮助都是有帮助的。试着转变成一种“矢量化”的思维方式。
2条答案
按热度按时间kuhbmx9i1#
示例代码
字符串
第一步
接通条件
型
第二
型
第二步
编辑列
型
df
型
42fyovps2#
使用有序
Categorical
为Length
列,因此可以通过DataFrame.sort_values
和DataFrame.duplicated
创建掩码,DataFrame.sort_index
用于原始行顺序,并将NaN
s设置为Series.mask
中不匹配的值,其中GroupBy.transform
用于获取第一个非NaN
值:字符串