Skip to main content
 首页 » 编程设计

python之根据 Pandas 中另一列的状态创建一个新列

2025年05月04日24EasonJim

假设我想创建一个新列来计算自状态为 1 以来的天数。例如,当前列将是下面的前三列。第四列是我想要得到的。

Index State Days Since_Days 
  1     1    0       0 
  2     0    20      20 
  3     0    40      40 
  4     1    55      55 
  5     1    60       5 
  6     1    70      10 

在不使用 for 循环的情况下,pandas 的处理方法是什么?

请您参考如下方法:

您也可以尝试按照您首先按 State 分组的位置进行操作,对于那些具有 State == 1 的分组,按差异进行填充。然后,对于那些具有 State == 0 的将是 na 可以用相应的 Days 列值填充

df.loc[df.State == 1, 'Since_Days'] = df.groupby('State')['Days'].diff().fillna(0) 
df['Since_Days'].fillna(df['Days'],inplace=True) 
print(df) 

结果:

   Index  State  Days  Since_Days 
0      1      1     0         0.0 
1      2      0    20        20.0 
2      3      0    40        40.0 
3      4      1    55        55.0 
4      5      1    60         5.0 
5      6      1    70        10.0