Skip to main content
 首页 » 编程设计

python之根据前几行在 Pandas 中生成列值

2025年05月04日21jirigala

假设我定期进行温​​度测量并将值记录在 Pandas Dataframe 中

day   temperature [F] 
0       89           
1       91          
2       93          
3       88             
4       90 

现在我想创建另一个列,当且仅当前两个值高于某个水平时,该列才设置为 1。在我的场景中,如果两个连续值高于 90,我想创建一个值为 1 的列,从而产生

day   temperature        Above limit? 
0       89               0 
1       91               0 
2       93               1 
3       88               0 
4       91               0 
5       91               1 
6       93               1 

尽管进行了一些 SO 和 Google 挖掘,但尚不清楚我是否可以在 for 循环中使用 iloc[x]、loc[x] 或其他东西?

请您参考如下方法:

您正在寻找 shift在 Pandas 中发挥作用。

 
import io 
import pandas as pd 
 
data = """ 
day   temperature        Expected 
0       89               0 
1       91               0 
2       93               1 
3       88               0 
4       91               0 
5       91               1 
6       93               1 
""" 
 
data = io.StringIO(data) 
df = pd.read_csv(data, sep='\s+') 
 
df['Result'] = ((df['temperature'].shift(1) > 90) & (df['temperature'] > 90)).astype(int) 
 
# Validation 
(df['Result'] == df['Expected']).all()