gpt4 book ai didi

python - 如何在数据框中删除重复项并首先保留两个异常(exception)?

转载 作者:行者123 更新时间:2023-12-04 00:50:17 25 4
gpt4 key购买 nike

我有一个看起来像这样的数据框。

import pandas as pd

# intialise data of lists.
data = {'ID':[101762, 101762, 102842, 102842, 106755, 106755, 108615, 108615, 113402, 113402, 114711, 114711],
'Year':[2019, 2020, 2019, 2020, 2019, 2020, 2019, 2020, 2019, 2020, 2019, 2020],
'Amount':[2091.06, 3330.00, 846.19, 846.19, 16185.60, 800, 281496.00, 1363730.00, 19815.00, 9585.00, 64332.70, 5400.00]}

# Create DataFrame
df = pd.DataFrame(data)

# Print the output.
df

这是一张图片,其中包含我正在尝试做的事情的一些逻辑。

enter image description here

需要删除 Amount = 0 或 Year = 2012 的任何内容

df = df[df['Amount'] != 0]
df = df[df['Year'] != '2021']

好的,到此为止。现在,如果 ID 和年份出现不止一次,我需要保留最大金额。这是我正在运行的代码。

df = df.sort_values(['ID','Year']).drop_duplicates(['ID','Year'], keep='first')

在这一点上,一切都很好,但我被困在了下一步中。我怎样才能做到以下几点?

  1. 如果 ID 重复且 2020 年金额 > 2019 年金额,将这两个金额相加
  2. 如果 ID 重复且 2020 Amount = 2019 Amount,则只保留 2020
  3. 如果ID重复且2019 Amount > 2020 Amount,只保留2019

我怎样才能实现这三个目标?

最佳答案

sort_values 的一些逻辑

out = df.sort_values('Year',ascending=False).drop_duplicates(['ID','Amount']).sort_values('Amount').groupby('ID').agg({'Year':'last','Amount':'sum'}).reset_index()
ID Year Amount
0 101762 2020 5421.06
1 102842 2020 846.19
2 106755 2019 16985.60
3 108615 2020 1645226.00
4 113402 2019 29400.00
5 114711 2019 69732.70

关于python - 如何在数据框中删除重复项并首先保留两个异常(exception)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67182827/

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