gpt4 book ai didi

python - 如何处理 Pandas Data Frame 中的重复条目?

转载 作者:太空宇宙 更新时间:2023-11-04 05:44:46 24 4
gpt4 key购买 nike

我有一个包含以下条目的 df

ID            FIRST_NAME    FIRST_SUBJECT     SECOND_SUBJECT
A2035559 Sometsdf Science
A2035559 Sometsdf ENGINEERING
A20340619 Nsdsjes MATHS
A20340619 Nsdsjes SCIENCE

我想通过“ID”列识别重复行并删除重复行,但将“FIRST_SUBJECT”从删除的行移动到原始行的“SECOND_SUBJECT”列。所以我有这个。

ID            FIRST_NAME    FIRST_SUBJECT     SECOND_SUBJECT
A2035559 Sometsdf Science ENGINEERING
A20340619 Nsdsjes MATHS SCIENCE

这对我来说似乎很棘手,我开始尝试按“ID”对 dataFrame 进行排序,但我所有的 ID 都以“A”开头,所以这行不通。我该如何实现这一目标?

我有另一个想法,我正在尝试,

我创建了数据帧的两个副本,df1 和 df2。因为,我最多只有一个重复项(即同一行的两个副本),我通过分别在 df1 和 df2 中获取最后一个和第一个来删除重复项,然后尝试合并两者。

  df1 = df.drop_duplicates('ID' , take_last=False)
df2 = df.drop_duplicates('ID' , take_last=True)

df1['SECOND_SUBJECT'] = df2['FIRST_SUBJECT']

这行得通吗?

最佳答案

我不是真正的 Python 或 pandas 开发人员,所以不要将此视为“正确”方式(我确定不是 - 而且我对这种第一/第二主题的方法持怀疑态度到更通用的映射模式)- 这不会很好地扩展到 3 个以上的主题。

data = {
'ID': ['A2035559', 'A20340619', 'A2035559', 'A20340619'],
'FIRST_NAME': ['Sometsdf', 'Nsdsjes', 'Sometsdf', 'Nsdsjes'],
'FIRST_SUBJECT': ['SCIENCE', 'MATHS', 'ENGINEERING', 'SCIENCE'],
'SECOND_SUBJECT': [None, None, None, None]
}

d = pandas.DataFrame(data=data, columns=['ID', 'FIRST_NAME', 'FIRST_SUBJECT', 'SECOND_SUBJECT'])

dup_first = d.drop_duplicates(subset=['ID'], take_last=True)
dup_last = d.drop_duplicates(subset=['ID'], take_last=False)

for row in dup_last['ID']:
dup_first.loc[dup_first['ID'] == row, 'SECOND_SUBJECT'] = dup_last.loc[dup_last['ID'] == row, 'FIRST_SUBJECT'].values[0]

dup_first

生产

ID         FIRST_NAME  FIRST_SUBJECT  SECOND_SUBJECT
A2035559 Sometsdf ENGINEERING SCIENCE
A20340619 Nsdsjes SCIENCE MATHS

关于python - 如何处理 Pandas Data Frame 中的重复条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32698424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com