繁体   English   中英

Pandas groupby:删除重复项

[英]Pandas groupby: remove duplicates

输入: (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

预计 output: (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

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

谢谢。

类似的答案在这里

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

您可以在分组后过滤欺骗

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])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM