كيفية إنشاء عمود منطقي يقارن قيمة الصفوف n التالية مع القيمة الفعلية للصف

0

بالنظر إلى dataframe df ، أود إنشاء عمود جديد لكل صف استنادًا إلى القيم في الصفوف التالية (على سبيل المثال 3 التالي). وفي حالة ، إذا كانت القيمة أكبر من x (على سبيل المثال 30) ، فستُرجع 1 ، وإلا 0.

على سبيل المثال ، بالنظر إلى ما يلي:

إدخال

A  B  C
14 3 32
28 3 78
15 4 68
42 3 42
24 4 87
13 3 65

حساب D: إذا كان أي من الصفوف التالية (في هذه الحالة 3) له قيمة> = من الصف الفعلي (n) +30 ثم إرجاع 1 ، وإلا 0

انتاج

A  B  C  D
14 3 32  1     # 32+30 = 62 so [78>=62, 68>=62]
28 3 78  0     # 78+30 = 108 
15 4 68  0     # 68+30 = 98
42 3 42  1     # 42+30 = 72 so [87>=72]  
24 4 87  0     # 87+30 = 117
13 3 65  0     # 65+30 = 95

كيف أفعل ذلك في الباندا؟

2 الاجابة

2
افضل جواب

دايمون rolling

df.C.iloc[::-1].rolling(3,min_periods=1).max().iloc[::-1].gt(df.C+30).astype(int)
Out[509]: 
0    1
1    0
2    0
3    1
4    0
5    0
Name: C, dtype: int32
:مؤلف
2
افضل جواب

يمكنك استخدام:

df['D'] = np.where((df.C+30<=df.C.shift(-1)) | ((df.C+30<=df.C.shift(-2))),1,0)

انتاج:

     A  B   C   D
0   14  3   32  1
1   28  3   78  0
2   15  4   68  0
3   42  3   42  1
4   24  4   87  0
5   13  3   65  0
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام