2017-04-16 103 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