熊猫减去另一列中每个相关值的行

时间:2021-02-03 14:07:27

标签: python pandas

我有两个数据框,一个名为 ticker_performance 的基本代码 df 和另一个名为 market_performance

enter image description here

enter image description here

我想要一列显示基本代码是否超过了每 %_diff 的市场代码的表现 (Date)。

这就是我想要的:

s = []
for i in market_performance.index:
    diff = market_performance['%_diff'][i]
    date = market_performance['Date'][i]
    
    other_row = ticker_performance[ticker_performance['Date'] == date]
    val = 'Y' if ((other_row['%_diff'].iloc[0] - diff) > 0) else 'N'
    
    s.append(val)
    
market_performance['Beaten?'] = s
market_performance

enter image description here

然而这是非常低效的。有没有一种有效的方法来做到这一点?

示例数据:

ticker_performance = pd.read_json('{"ticker":{"0":"NET","1":"NET"},"Date":{"0":1612137600000,"1":1612224000000},"Open":{"0":77.75,"1":81.82},"Close":{"0":80.49,"1":83.57},"abs_diff":{"0":2.74,"1":1.75},"%_diff":{"0":3.52,"1":2.14}}')
market_performance = pd.read_json('{"ticker":{"0":"QQQ","1":"QQQ","2":"VOO","3":"VOO"},"Date":{"0":1612137600000,"1":1612224000000,"2":1612137600000,"3":1612224000000},"Open":{"0":318.11,"1":325.48,"2":343.63,"3":349.05},"Close":{"0":322.48,"1":327.76,"2":345.81,"3":350.69},"abs_diff":{"0":4.37,"1":2.28,"2":2.18,"3":1.64},"%_diff":{"0":1.37,"1":0.7,"2":0.63,"3":0.47}}')

0 个答案:

没有答案
相关问题