亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從具有匹配索引的數據框中減去序列

如何從具有匹配索引的數據框中減去序列

一只名叫tom的貓 2021-03-31 13:09:01
我有一個DataFrame帶有多個列的,一個Series。兩者具有相同的特征DateTimeIndex。我想從中的每一行的Series所有值中減去的每一行的值DataFrame這是我的示例數據:dates   = pandas.date_range('20180101', periods=10)stocks  = ['AAPL', 'GOOG', 'MSFT', 'AMZN', 'FB']data    = numpy.random.randn(10,5)prices  = pandas.DataFrame(index=dates, columns=stocks, data=data)returns = prices.pct_change(1)這使我DataFrame類似于以下內容然后創建我的Series,這是一籃子股票的回報basket = returns.mean(axis=1)這使我Series類似于以下內容現在我想從每只股票的收益中減去一攬子收益:excess_ret = returns - basket我收到以下警告:RuntimeWarning: Cannot compare type 'Timestamp' with type 'str', sort order isundefined for incomparable objects  return this.join(other, how=how, return_indexers=return_indexers)這是結果DataFrame:這曾經在中工作pandas-0.16.2,但我現在正在使用pandas-0.22.0,看來我現在無法Series從DataFrame具有匹配項的a中減去a Indexes?問題:我當前正在執行的減法操作中發生了什么?如何從中的每一行的Series所有值中減去中的每一行的值DataFrame?
查看完整描述

1 回答

?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

我認為需要sub帶有參數axis=0的匹配索引,DataFrame該索引的索引為Series:


軸:{0,1,'索引','列'}


對于系列輸入,軸與系列索引匹配


excess_ret = returns.sub(basket, axis=0)

print (excess_ret)

                AAPL      GOOG      MSFT      AMZN        FB

2018-01-01       NaN       NaN       NaN       NaN       NaN

2018-01-02 -1.833226 -0.110935  0.455586 -0.173553  1.662127

2018-01-03 -0.662713  1.737714 -1.295243  1.381853 -1.161611

2018-01-04  3.269817 -0.824819  0.377973 -0.788368 -2.034604

2018-01-05 -0.082528  1.814466  2.295359 -3.543489 -0.483808

2018-01-06  0.295950  2.978380  1.000856  1.346977 -5.622164

2018-01-07  1.988864 -2.316191  0.633370  1.043901 -1.349943

2018-01-08 -2.640122 -0.861669 -1.472634 -1.559951  6.534376

2018-01-09  8.062484 -1.712583 -2.497513 -0.807566 -3.044822

2018-01-10 -1.823915  0.370618 -0.883559  0.888679  1.448177

如果要按列匹配:


a = returns.mean(axis=0)

print (a)

AAPL    0.088224

GOOG   -1.301244

MSFT   -2.436290

AMZN   -1.009339

FB     -0.102484

dtype: float64


excess_ret = returns.sub(a, axis=1)

print (excess_ret)

                AAPL      GOOG       MSFT      AMZN        FB

2018-01-01       NaN       NaN        NaN       NaN       NaN

2018-01-02 -1.353102  1.441870   5.759181  0.421661 -0.608508

2018-01-03 -0.434575 -0.969659   0.665239  0.823154  4.917633

2018-01-04  8.771575 -2.722012   0.409977 -2.113780 -1.164615

2018-01-05 -0.220083  0.213942   1.329937 -0.372537  0.037217

2018-01-06 -0.633686  6.371478 -14.157027 -0.831583  1.226992

2018-01-07 -2.363521  0.130848   1.743317 -1.381718 -1.929583

2018-01-08 -3.062185 -6.431137   0.438800  0.956752 -1.641623

2018-01-09 -0.450300  2.093572   2.965726 -0.617335  1.042234

2018-01-10 -0.254123 -0.128903   0.844849  3.115386 -1.879747


查看完整回答
反對 回復 2021-04-20
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號