python pandas 查找相同金额的交易

标签 python pandas

我有一个 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/

相关文章:

Python - 使用 alpha channel 在子图中使用 matplotlib 叠加 2 个图

python - 使用带有关键字参数的 map() 函数

python - 如果数据框的至少 20% 的条目采用特定值,如何使用 pandas/numpy 删除数据框的特征/列?

python - Django,尝试安装旧包, "cannot import name email_re"

python - ExcelWriter 值错误 : Excel does not support datetime with timezone when saving df to Excel

python - 将 Pandas DataFrame 中的日期对象列转换为字符串

python - 在 pandas DataFrame 上调用 dropna() 后是否应该更新多索引级别?

python - Pandas 根据条件获取行 ID

python - 在 pandas 中执行 for 循环

python - pandas 中的复杂查询