Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于两个数据帧匹配交易的汇款人和收款人_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 基于两个数据帧匹配交易的汇款人和收款人

Python 基于两个数据帧匹配交易的汇款人和收款人,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,有两个数据帧。第一个显示的是来自某些客户的转账。第二个数据帧显示哪个客户机收到这些钱df1只有发送者id,df2只有接收者id。我需要在每个数据框中添加一列,根据日期和时间和组id(只有一个组中的客户可以相互转账)显示交易的另一端。诀窍在于,钱在收到之前几分钟就已经寄出了,所以在df1和df2中的date列中没有精确的匹配项。另一件事是,一个客户可以向其组中的两个或多个不同的客户汇款,因此价格列可能也不完全匹配(df1中的价格总是等于或高于df2)。 是否需要在df2中添加一列,显示使用df1中

有两个数据帧。第一个显示的是来自某些
客户的转账。第二个数据帧显示哪个
客户机
收到这些钱
df1
只有发送者id,
df2
只有接收者id。我需要在每个数据框中添加一列,根据
日期和时间
组id
(只有一个组中的客户可以相互转账)显示交易的另一端。诀窍在于,钱在收到之前几分钟就已经寄出了,所以在
df1
df2
中的
date
列中没有精确的匹配项。另一件事是,一个
客户
可以向其
中的两个或多个不同的
客户
汇款,因此
价格
列可能也不完全匹配(
df1
中的
价格
总是等于或高于
df2
)。 是否需要在
df2
中添加一列,显示使用
df1
中的数据获得资金的
client
?考虑到可能存在多个接收器,这将导致添加额外字段,是否可以添加到根据
df2
中的数据向其发送资金的
df1
客户id
? 初始数据帧的示例:

df1

df2


在本例中,我们需要将发送方7与接收方1和2、8与3和4、9与5进行匹配。

您是否只需要以下内容:
df1.merge(df2,on='group_id')
?或者:
df2['group\u id'].map(df1.set\u index('group\u id')['client\u id'])
适用于此示例,但组中可能有多个发件人。在这种情况下,还需要匹配日期和价格,然后合并所有3个?如果没有两个因素,这将起作用:
date\u payed
date\u received
相隔几分钟(确切的分钟数可能会有所不同);
price
中也没有精确的匹配:例如
client
7发送了16500次,但是
client
1收到了10000次,而
client
2收到了6500次,那么您就不能很好地表示您的问题。请回顾并创建一个能准确说明您实际问题的报告。你还应该包括你目前的尝试,这样你就可以清楚地知道你已经尝试了什么。
client_id group_id date_payed             price_payed
7         11       01.01.2019  14:41:37   16500
8         14       05.01.2019  14:40:00   15000
9         18       08.01.2019  12:13:04   14000
client_id group_id date_received          price_received
1         11       01.01.2019  14:44:37   10000
2         11       01.01.2019  14:44:37   6500
3         14       05.01.2019  14:42:00   12000
4         14       05.01.2019  14:42:00   3000
5         18       08.01.2019  12:16:04   14000