gpt4 book ai didi

python - 连接 python 表

转载 作者:行者123 更新时间:2023-12-01 00:44:26 25 4
gpt4 key购买 nike

我需要将两个表连接在一起:

例如:

表1

index'      (GBP, USD)  (USD, RUB)   etc...
2019-07-01 1.1 62 ...
2019-07-02 1.2 63 ...
2019-07-03 1.3 64 ...

表2

date          pair  
2019-07-01 GBP, USD
2019-07-01 USD, RUB
2019-07-02 GBP, USD
2019-07-02 USD, RUB

目的是添加某种连接,在表 2 中创建一个新列,显示表 1 中的费率。

决赛

date          pair     Rate
2019-07-01 GBP, USD 1.1
2019-07-01 USD, RUB 62
2019-07-02 GBP, USD 1.2
2019-07-02 USD, RUB 63

我尝试了 pd.merge 的一些变体,但可以得到我正在寻找的东西。也许需要做一些不同的事情?

最佳答案

清理

这需要先进行一些清理。 tbl1 需要采用长格式,并且我们需要确保这些列是元组而不是看起来像元组的字符串。

fx = tbl1.stack().rename_axis(['date', 'pair']).reset_index(name='FX')
fx['pair'] = fx['pair'].str[1:-1].str.split(', ').map(tuple)

fx

date pair FX
0 2019-07-01 (GBP, USD) 1.1
1 2019-07-01 (USD, RUB) 62.0
2 2019-07-02 (GBP, USD) 1.2
3 2019-07-02 (USD, RUB) 63.0
4 2019-07-03 (GBP, USD) 1.3
5 2019-07-03 (USD, RUB) 64.0
<小时/>

或者不理会它并修复列

tbl1.columns = tbl1.columns.str[1:-1].str.split(', ').map(tuple)

tbl1

GBP USD
USD RUB
index
2019-07-01 1.1 62
2019-07-02 1.2 63
2019-07-03 1.3 64
<小时/>

tbl2 需要确保 pair 列是元组,而不是看起来像元组的字符串。

tbl2 = tbl2.assign(pair=tbl2.pair.str.split(', ').map(tuple))

tbl2

pair
date
2019-07-01 (GBP, USD)
2019-07-01 (USD, RUB)
2019-07-02 (GBP, USD)
2019-07-02 (USD, RUB)
<小时/>

查找

使用固定的tbl1

tbl2.assign(FX=tbl1.lookup(tbl2.index, tbl2.pair))

pair FX
date
2019-07-01 (GBP, USD) 1.1
2019-07-01 (USD, RUB) 62.0
2019-07-02 (GBP, USD) 1.2
2019-07-02 (USD, RUB) 63.0
<小时/>

pd.merge_asof

使用长格式fx

 pd.merge_asof(tbl2, fx, on='date', by='pair')

pair date FX
0 (GBP, USD) 2019-07-01 1.1
1 (USD, RUB) 2019-07-01 62.0
2 (GBP, USD) 2019-07-02 1.2
3 (USD, RUB) 2019-07-02 63.0

关于python - 连接 python 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57096128/

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