在来自数千个列的另一个数据框中的值中查找和替换一个数据框中的符号

时间:2019-01-27 05:48:08

标签: python pandas dataframe

我有一个带有股票代码作为值的数据框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
                                             }

本质上,目标是将数据框1中的符号替换为数据框2中的返回值

 {     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,它们太静态了。我尝试过地图,合并,但是在使这种动态和可伸缩性方面没有运气。

2 个答案:

答案 0 :(得分:3)

此用例需要df.replace(),它在替换时会自动映射索引和值,因此您应该获得所需的输出:

https://github.com/apache/airflow/blob/master/airflow/contrib/operators/mlengine_operator.py

这会将df1的所有值替换为与df2的索引相对应的df2。

以下示例:

from airflow.contrib.operators import MLEngineTrainingOperator

答案 1 :(得分:1)

您可能需要df.update(),并使用另一个DataFrame中的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():

>>> df.update(df2)

结果:

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