gpt4 book ai didi

python - 如何在 Python 中删除日期相同的数据

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

我有一个如下所示的 csv 文件。

In 'order.csv'

date orderName orderNumber state
1/7 Tom 1
1/7 Jeny 4
1/7 Brown 2
1/7 Tom 3
1/8 Sky 5
1/8 Blue 7
1/8 Red 6
1/8 Wine 8
1/9 Tom 9
1/9 Earth 11
1/9 Earth 10

我想通过算法得到下面的结果。

In 'order.csv'

date orderName orderNumber state
1/7 Tom 1 duplicated
1/7 Jeny 4
1/7 Brown 2
1/7 Tom 3 duplicated
1/8 Sky 5
1/8 Blue 7
1/8 Red 6
1/8 Wine 8
1/9 Tom 9
1/9 Earth 11 duplicated
1/9 Earth 10 duplicated

1/9 也有汤姆。但由于日期不同,因此不会被视为重复。仅考虑复制取决于每个日期。
我怎样才能用python制作这个算法?非常感谢。

最佳答案

使用DataFrame.duplicated使用 keep=False 获取列表中指定列的所有重复项并设置新列 numpy.where :

df['state'] = np.where(df.duplicated(['date','orderName'], keep=False), 'duplicated', '')
print (df)
date orderName orderNumber state
0 1/7 Tom 1 duplicated
1 1/7 Jeny 4
2 1/7 Brown 2
3 1/7 Tom 3 duplicated
4 1/8 Sky 5
5 1/8 Blue 7
6 1/8 Red 6
7 1/8 Wine 8
8 1/9 Tom 9
9 1/9 Earth 11 duplicated
10 1/9 Earth 10 duplicated

详细信息:

print (df.duplicated(['date','orderName'], keep=False))
0 True
1 False
2 False
3 True
4 False
5 False
6 False
7 False
8 False
9 True
10 True
dtype: bool

如果需要删除包含所有重复值的行,请使用 boolean indexing使用 ~ 的反转掩码 - 所以如果不重复,它会选择所有行:

df1 = df[~df.duplicated(['date','orderName'], keep=False)]

df1 = df.drop_duplicates(['date','orderName'], keep=False)
print (df1)
date orderName orderNumber state
1 1/7 Jeny 4 NaN
2 1/7 Brown 2 NaN
4 1/8 Sky 5 NaN
5 1/8 Blue 7 NaN
6 1/8 Red 6 NaN
7 1/8 Wine 8 NaN
8 1/9 Tom 9 NaN

关于python - 如何在 Python 中删除日期相同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57766675/

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