2017-04-16 519 views
2

我讀一個文件pandas_read,其結果是:熊貓方法來計算

TotIrr DiffIrr Temp WindSpeed 
0  3.2  2.5 19.67  0.34 
1  1.8  0.0 19.67  0.35 
2  2.5  1.4 19.67  0.31 
3  3.7  2.5 19.67  0.30 
4  3.2  2.5 19.67  0.32 

一個簡單的方法來計算列是:

df['WS * 2'] = df['WindSpeed'] * 2 

輸出:

TotIrr DiffIrr Temp WindSpeed WS * 2 
0  3.2  2.5 19.67  0.34 0.68 
1  1.8  0.0 19.67  0.35 0.70 
2  2.5  1.4 19.67  0.31 0.62 
3  3.7  2.5 19.67  0.30 0.60 
4  3.2  2.5 19.67  0.32 0.64 

如何我可以用Temp_index_2來計算WindSpeed_index_4嗎?有一個簡單的方法嗎?

+0

你能詳細說明你想做什麼嗎?這是否是一種滾動計算? –

回答

2

有人已經在評論中提到這種方法,但只是爲了更清楚,你可以使用:

df['Fourth WindSpeed'] = df['WindSpeed'].shift(-4) 
df['Second Temp'] = df['Temp'].shift(-2) 
df['Third Value'] = df['Forth WindSpeed'] * df['Second Temp'] 

這將是總體思路完成熊貓需要的東西。請注意,'Third Value'列將遵循df的原始索引。如果你需要遵循一些其他指標,你可以使用:

df['Shift Third Value'] = df['Third Value'].shift(x) # x is an integer 

一旦你的技術來實現你需要什麼,你通常可以壓縮報表,使其更高效:

df['Third Value'] = df['WindSpeed'].shift(-4) * df['Temp'].shift(-2) 
+0

完美無瑕。非常感謝 :-) –

1

您可以使用iloc

df['WindSpeed'].iloc[4] * df['Temp'].iloc[2] 
+0

這有效,但新列中的每個值都是相同的。有沒有辦法獲得WindSpeed的第四個值和Temp的第二個值並計算第三個值,然後進入下一行?像for循環一樣,只有Pandas。 –

+0

你在說什麼不清楚。在WindSpeed的第四個值和Temp的第二個值並計算第三個值之後,循環會做什麼? – splinter

+1

我認爲他們正在尋找'shift'。 – gereleth