我有一个带有股票代码作为值的数据框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,它们太静态了。我尝试过地图,合并,但是在使这种动态和可伸缩性方面没有运气。
答案 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(df2)
>>> df
A B
0 1 4
1 2 5
2 3 6