查找一个数据帧中的符号,并将其替换为另一个数据帧中跨越数千列的值

2024-04-26 10:27:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个以股票符号作为值的数据框1。日期在列中

 {     1/10/2001 1/11/2001 1/12/2001 ...............etc till 1/22/2019
   0    AAPL      MS        AAPL
   1    MRK       AAPL      AMZN
   2    AMZN      MSFT      MRK
   3    MSFT      AAPL      MSFT
                                                       }

我的第二个数据帧包含一个符号作为索引,列上的日期与第一个完全匹配。这些值是每日回报。你知道吗

{       1/10/2001 1/11/2001 1/12/2001 .............. etc till 1/22/2019
  AAPL    0.05     0.03      0.03
  MSFT    0.04     0.01      0.01
  MRK    -0.04    -0.07      0.05
  MS      0.02     0.04      0.08
  GS      0.01     0.02      0.10
  AMZN    0.04     0.02      0.06
                                             }

基本上,目标是用数据帧2中的返回值替换数据帧1中的符号

 {     1/10/2001 1/11/2001 1/12/2001 ...............etc till 1/22/2019
   0    0.05      0.04      0.03
   1   -0.04      0.03      0.06
   2    0.04      0.01      0.05
   3    0.04      0.03      0.01
                                              }

我试过iloc,loc,它们太静态了。我尝试了地图,合并,但没有运气,使这个动态和可伸缩性方面。你知道吗


Tags: 数据gs目标etc符号locms股票
2条回答

您可能需要^{},它使用另一个数据帧中的non-NA值进行就地修改。你知道吗

示例:

>>> df
   A    B
0  1  400
1  2  500
2  3  600

>>> df2
   B  C
0  4  7
1  5  8
2  6  9

使用测向更新():

>>> df.update(df2)

结果:

>>> df
   A  B
0  1  4
1  2  5
2  3  6

您需要^{}对于此用例,它在替换时自动映射索引和值,因此您应该获得所需的输出:

df_new=df1.replace(df2)
print(df_new)

   2001-10-01  2001-11-01  2001-12-01
0        0.05        0.04        0.03
1       -0.04        0.03        0.06
2        0.04        0.01        0.05
3        0.04        0.03        0.01

这将用对应于df2索引的df2替换df1的所有值。

以下示例:

print(df1)

  2001-10-01 2001-11-01 2001-12-01
0       AAPL         MS       AAPL
1        MRK       AAPL       AMZN
2       AMZN       MSFT        MRK
3       MSFT       AAPL       MSFT

print(df2)

      2001-10-01  2001-11-01  2001-12-01
AAPL        0.05        0.03        0.03
MSFT        0.04        0.01        0.01
MRK        -0.04       -0.07        0.05
MS          0.02        0.04        0.08
GS          0.01        0.02        0.10
AMZN        0.04        0.02        0.06

df_new=df1.replace(df2)
print(df_new)

   2001-10-01  2001-11-01  2001-12-01
0        0.05        0.04        0.03
1       -0.04        0.03        0.06
2        0.04        0.01        0.05
3        0.04        0.03        0.01

相关问题 更多 >