gpt4 book ai didi

python pandas 查找相同金额的交易

转载 作者:行者123 更新时间:2023-11-28 20:14:25 25 4
gpt4 key购买 nike

我有一个 pandas 数据框,如下所示。

d = {'emp': ['a', 'a', 'a', 'b', 'b', 'b'], 'vendor': ['x', 'x', 'y', 'z', 'z', 'z'], 'date': [1,1,2,3,3,3], 'amount': [4.9, 4.8, 1, 6, 5.6, 5.4]}
df = pd.DataFrame(data=d)

df["rounds"]=np.ceil(df['amount'])
df

amount date emp vendor rounds
0 4.9 1 a x 5.0
1 4.8 1 a x 5.0
2 1.0 2 a y 1.0
3 6.0 3 b z 6.0
4 5.6 3 b z 6.0
5 5.4 3 b z 6.0

我想创建一个 example 列,如果相同的 emp 花费相同的金额(列 rounds),该列将有一个唯一的数字在同一天的同一 vendor

一个员工可能有多个交易符合这个标准,或者他们可能有 0 个交易符合这个标准

我该如何继续?

 example
1
1

2
2
2

example列中的数字相同时,表示属于一组的所有事务

更新 1

另一个例子

如果我的数据框如下所示

d = {'emp': ['a', 'a', 'a', 'a', 'b', 'b'], '供应商': ['x', 'x ', 'y', 'y', 'z', 'z'], '日期': [1,1,2,2,3,3], '金额': [4.9, 4.8, 1, 1, 5.6, 5.4]}

然后 example 列的值应为“1,1,2,2,3,3”

最佳答案

duplicatedtransform 中调用,duplicated 将查找每个组中供应商的重复项目数量,然后我们将它们相加,应该可以达到您的需要, transform你可以查看链接

df.groupby(['date','emp','rounds']).vendor.transform(lambda x : x.duplicated().sum())
Out[806]:
0 1
1 1
2 0
3 2
4 2
5 2
Name: vendor, dtype: int64

分配回来后

df['example']=df.groupby(['date','emp','rounds']).vendor.transform(lambda x : x.duplicated().sum())
#yield
df
Out[808]:
amount date emp vendor rounds example
0 4.9 1 a x 5.0 1
1 4.8 1 a x 5.0 1
2 1.0 2 a y 1.0 0
3 6.0 3 b z 6.0 2
4 5.6 3 b z 6.0 2
5 5.4 3 b z 6.0 2

更新:

df['key']=tuple(zip(df.emp,df.vendor,df.date,df.rounds)) 
df[df.duplicated('key',keep=False)].groupby('key').ngroup()+1
Out[831]:
0 1
1 1
2 2
3 2
4 3
5 3
dtype: int64

关于python pandas 查找相同金额的交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49884072/

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