gpt4 book ai didi

python - 循环一个 pandas 列以将值与另一个数据帧的索引进行匹配

转载 作者:行者123 更新时间:2023-12-01 02:49:16 24 4
gpt4 key购买 nike

Exp 是一个带有 datetime objectDataFrame

           Exp
0 1989-06-01
1 1989-07-01
2 1989-08-01
3 1989-09-01
4 1989-10-01

CLDataframe,其中 Index 作为 DateTime 对象

                    CL
1989-06-01 68.800026
1989-06-04 68.620026
1989-06-05 68.930023
1989-06-06 68.990021
1989-06-09 69.110023
  • 我想将新列 R 添加到 CL 数据框中,该数据框的 Exp 日期与 CL 索引相匹配。

这就是我想要的输出

                   CL          R

1989-06-01 68.800026 1989-06-01
1989-06-04 68.620026
1989-06-05 68.930023
1989-06-06 68.990021
1989-06-09 69.110023

这是我尝试做的:

for m in Exp.iloc[:,0]:
if m == CL.index:
CL['R'] = m

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

有人可以帮我吗?我多次收到此 ValueError

最佳答案

编辑:根据评论者的建议进行更新。

您需要执行 LEFT JOIN:

Exp = pd.DataFrame(
pd.to_datetime(['1989-06-01', '1989-07-01', '1989-08-01', '1989-09-01', '1989-10-01']),
columns=['Exp'])

给出:

          Exp
0 1989-06-01
1 1989-07-01
2 1989-08-01
3 1989-09-01
4 1989-10-01

CL = pd.DataFrame(
[68.800026, 68.620026, 68.930023, 68.990021, 69.110023],
index = pd.to_datetime(['1989-06-01', '1989-06-04', '1989-06-05', '1989-06-06', '1989-06-09']),
columns = ['CL'])

给出

                   CL
1989-06-01 68.800026
1989-06-04 68.620026
1989-06-05 68.930023
1989-06-06 68.990021
1989-06-09 69.110023

然后:

(CL
.reset_index()
.merge(Exp, how='left', right_on='Exp', left_on='index')
.set_index('index')
.rename(columns={'Exp': 'R'}))

返回您要查找的内容

                   CL           R
index
1989-06-01 68.800026 1989-06-01
1989-06-04 68.620026 NaN
1989-06-05 68.930023 NaN
1989-06-06 68.990021 NaN
1989-06-09 69.110023 NaN

因为循环数据帧不是 Pandas 的做事方式。

关于python - 循环一个 pandas 列以将值与另一个数据帧的索引进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44958677/

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