创建具有不同条件的列

时间:2020-08-14 05:04:49

标签: python-3.x pandas

我从较大的数据框中提取了以下内容:

Here "id" is not a primary key.
     
        

目标是创建一个列“ D”,其中对于大于“ X”的索引,程序必须在“类型”列中搜索最后n个值,并仅对那些标识为“ DM”的值进行计数。

例如,如果“ x”和“ n”分别为5,则我希望这样:

df = pd.DataFrame({'Tipe': ['DM','DM','DM','DS','DS','DI','DI','DM','DI','DS','DM','DM','DM','DM','DI','DM','DM','DS','DS','DS','DM']})

我尝试使用“ .tail”,但尝试使用整列中现有的'DM'值,而不仅仅是最后n个值中的值。

1 个答案:

答案 0 :(得分:2)

pandas.Series.shiftrollingwhere一起使用:

x = 5
n = 5

s = df["Type"].eq("DM").shift().rolling(n).sum()
df["D"] = s.where(s.index > x)

输出:

   Type    D
0    DM  NaN
1    DM  NaN
2    DM  NaN
3    DS  NaN
4    DS  NaN
5    DI  NaN
6    DI  2.0
7    DM  1.0
8    DI  1.0
9    DS  1.0
10   DM  1.0
11   DM  2.0
12   DM  3.0
13   DM  3.0
14   DI  4.0
15   DM  4.0
16   DM  4.0
17   DS  4.0
18   DS  3.0
19   DS  2.0
20   DM  2.0