gpt4 book ai didi

python-3.x - 标记 Pandas 时间序列中的重复条目

转载 作者:行者123 更新时间:2023-12-04 23:11:45 25 4
gpt4 key购买 nike

我有一个采用这种形式的数据框(但有几百万行):

import pandas as pd     
dict = {'id':["A", "A", "A", "B", "B", "B", "C", "C", "C", "D", "D", "D"],
'year': ["2000", "2001", "2002", "2000", "2001", "2003", "1999", "2000", "2001", "2000", "2000", "2001"],
'vacation':["France", "Morocco", "Morocco", "Germany", "Germany", "Germany", "Japan", "Australia", "Japan", "Canada", "Mexico", "China"],
'new':[1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1]}
df = pd.DataFrame(dict)

A 2000 France
A 2001 Morocco
A 2002 Morocco
B 2000 Germany
B 2001 Germany
B 2003 Germany
C 1999 Japan
C 2000 Australia
C 2001 Japan
D 2000 Canada
D 2000 Mexico
D 2001 China

对于每年的每个人,都给出了度假目的地;一年中可以有多个度假目的地。
当参与者去一年前没有去过的目的地(即目的地是新的)度假时,我想标记行。在上述情况下,输出将是:
id  year    vacation    new
A 2000 France 1
A 2001 Morocco 1
A 2002 Morocco 0
B 2001 Germany 1
B 2002 Germany 0
B 2003 Germany 0
C 1999 Japan 1
C 1999 Australia 1
C 2000 Japan 1
D 2000 Canada 1
D 2000 Mexico 1
D 2001 China 1

对于 A、B、C 和 D,我们数据框中的第一个度假目的地被标记为新的。当 A 连续两年前往摩洛哥时,第 2 次出现不会被标记,因为 A 前一年去过那里。当 B 连续 3 次前往德国时,第 2 次和第 3 次出现不会被标记。当 C 人两次去日本时,所有事件都会被标记,因为他们没有连续两年去日本。 D 去了 3 个不同的目的地(尽管在 2000 年去了 2 个目的地)并且所有这些目的地都被标记了。

我一直在尝试自己解决它,但一直无法摆脱迭代,对于如此庞大的数据集来说,迭代计算量太大。

我很感激任何输入;谢谢。

最佳答案

国际大学联盟,

我们正在做的是按 id 分组& vacation并确保该年份不等于上面的年份,或者我们可以选择该组合的第一个实例。

希望这很清楚。如果您需要更多帮助,请告诉我。

df["new_2"] = (
df.groupby(["id", "vacation"])["id", "year"]
.apply(lambda x: x.ne(x.shift()))
.all(axis=1)
.add(0)
)
print(df)
id year vacation new_2
0 A 2000 France 1
1 A 2001 USA 1
2 A 2002 France 0
3 B 2001 Germany 1
4 B 2002 Germany 0
5 B 2003 Germany 0
6 C 1999 Japan 1
7 C 2000 Australia 1
8 C 2001 France 1

关于python-3.x - 标记 Pandas 时间序列中的重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59615272/

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