gpt4 book ai didi

python - pandas 创建一个带有条件的新列(现有列上的最大日期和 == 条件)

转载 作者:行者123 更新时间:2023-12-01 02:09:30 26 4
gpt4 key购买 nike

我有一个包含以下数据的数据框:

id|invoice_no|invoice_date|change_previous_month|change_status

984974|110|2016-12-31|0|A

984974|8202|2017-01-30|-64864|D

115677|5505|2016-12-31|0|A

115677|5635|2017-01-30|58730|U

我想根据现有列的条件从“invoice_data”创建一个新列“event_date”。条件是:

1) 选择定义为最新日期的最大“invoice_date”,并

2) 选择“change_status”,其中“change_status”==“A”或“change_status”==“U”

结果数据框应如下所示:

id|invoice_no|invoice_date|change_previous_month|change_status|event_date

984974|110|2016-12-31|0|A|2016-12-31

984974|8202|2017-01-30|-64864|D|2016-12-31

115677|5505|2016-11-31|0|A|2017-01-30

115677|5635|2017-01-30|58730|U|2017-01-30

应根据invoice_date创建event_date并满足上述两个条件,提前感谢您的帮助。

最佳答案

我认为你需要:

<小时/>
s = (df[df['change_status'].isin(['A','U'])]
.sort_values('invoice_date')
.drop_duplicates('id', keep='last')
.set_index('id')['invoice_date'])

df['event_date'] = df['id'].map(s)
print (df)
id invoice_no invoice_date change_previous_month change_status \
0 984974 110 2016-12-31 0 A
1 984974 8202 2017-01-30 -64864 D
2 115677 5505 2016-12-31 0 A
3 115677 5635 2017-01-30 58730 U

event_date
0 2016-12-31
1 2016-12-31
2 2017-01-30
3 2017-01-30

关于python - pandas 创建一个带有条件的新列(现有列上的最大日期和 == 条件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48788282/

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