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

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

使用 Pandas 計算大型數據幀中第 n 個和第 n-1 個值之間的差異的

使用 Pandas 計算大型數據幀中第 n 個和第 n-1 個值之間的差異的

一只甜甜圈 2021-11-09 13:40:41
假設我有一個 100x100 的 Pandas 數據框,完全由數值組成。我想要做的是獲取第 n 行和第 n-1 行的每一列的差異:假設第一列有值 (1,2,3,4.....100) 我想要的是輸出 (1,1,1,1,1,1,1.....1)它將從第二行中減去第一行,從第三行中減去第二行等等......對于每一列。我已經使用 for 循環完成了它,它循環遍歷每一列,然后每行。但我想知道是否有更優雅的解決方案這就是我認為可行的方法,實際上由于某些原因還沒有機會嘗試....outputframe = pd.DataFrame(data=0, index = list(range(1,99)), column = list(range(1,100))For i in range(0,100):    For x in range(1,100):       outputframe.iloc[x,i]= df.iloc[x,i]-df[x-1,i]我相信這會給我正確的結果,但是,我想知道是否有更優雅的解決方案
查看完整描述

2 回答

?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

這里的關鍵是 pandasshift(n)方法,它允許您按n行移動索引。


import pandas as pd

import numpy as np


df = pd.DataFrame(np.random.randint(0,100,size=(100, 100)))

df_new = df.shift(-1) - df


查看完整回答
反對 回復 2021-11-09
?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

就像@ALollz 所說的那樣.diff()在這里工作得很好而且很快。第一行將得到 NaN,所以我再次重新分配第一行。


import pandas as pd

import numpy as np


df = pd.DataFrame(np.random.randint(0,100,size=(100, 100)))

df_new = df.diff()

df_new.iloc[0] = df.iloc[0]

原始數據框

http://img1.sycdn.imooc.com//618a0a06000142a702640301.jpg

.diff() 之后(第一行為 NaN)

http://img1.sycdn.imooc.com//618a0a110001f21803950301.jpg

后 df_new.iloc[0] = df.iloc[0]


http://img1.sycdn.imooc.com//618a0a1e00016c3c04000304.jpg

查看完整回答
反對 回復 2021-11-09
  • 2 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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