熊猫groupby:删除重复项

时间:2020-11-12 03:41:33

标签: python pandas pandas-groupby

输入:(CSV文件)

name    subject internal_1_marks    internal_2_marks    final_marks
abc     python      45                      50              47
pqr     java        45                      46              46
pqr     python      40                      33              37
xyz     java        45                      43              49
xyz     node        40                      30              35
xyz     ruby        50                      45              47

预期输出:(CSV文件)


name    subject internal_1_marks    internal_2_marks    final_marks
abc     python      45                      50              47
pqr     java        45                      46              46
        python      40                      33              37
xyz     java        45                      43              49
        node        40                      30              35
        ruby        50                      45              47

我已经尝试过了:

df = pd.read_csv("student_info.csv")
df.groupby(['name', 'subject']).sum().to_csv("output.csv")

但是它在第一栏中给出了重复,如下所示。


name    subject internal_1_marks    internal_2_marks    final_marks
abc     python      45                      50              47
pqr     java        45                      46              46
pqr     python      40                      33              37
xyz     java        45                      43              49
xyz     node        40                      30              35
xyz     ruby        50                      45              47

我需要删除第一列中的重复项,如预期输出所示。

谢谢。

2 个答案:

答案 0 :(得分:2)

类似的答案here

mask = df['name'].duplicated()
df.loc[mask.values,['name']] = ''

  name subject  internal_1_marks  internal_2_marks  final_marks
0  abc  python                45                50           47
1  pqr    java                45                46           46
2       python                40                33           37
3  xyz    java                45                43           49
4         node                40                30           35
5         ruby                50                45           47

答案 1 :(得分:1)

您可以在分组之后过滤重复对象

df.groupby(['name', 'subject']).sum().reset_index().assign(name=lambda x: x['name'].where(~x['name'].duplicated(), '')).to_csv('filename.csv', index=False)

另外,在读取文件时,您可以通过index_col获取重复文件

df = pd.read_csv('test.csv', index_col=[0])