基于python

时间:2016-03-24 02:03:11

标签: python pandas

我的数据框df包含[ShowOnAir, AfterPremier, ID, EverOnAir]列。

我的条件是那个

  • 如果它是groupby(df.ID)的第一个元素 然后if (df.ShowOnAir ==0 or df.AfterPremier == 0),然后EverOnAir = 0

  • else EverOnAir = 1

我不确定如何将groupby的第一个元素与orignal数据帧df的元素进行比较。

如果能得到帮助,

真的很感激,

谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用{% block scripts %} {{ super() }} <script type="text/Javascript"> $("input#my_focus_field_id").focus() </script> {% endblock %} 为您的论坛获取行号,然后您可以对结果数据框执行逻辑操作:

cumsum

答案 1 :(得分:0)

您可以先创建填充EverOnAir的新列1。然后ID fgroupby自定义函数0applywhere找到列的第一个元素并填充print df ShowOnAir AfterPremier ID 0 0 0 a 1 0 1 a 2 1 1 a 3 1 1 b 4 1 0 b 5 0 0 b 6 0 1 c 7 1 0 c 8 0 0 c def f(x): #print x x['EverOnAir'].iat[0] = np.where((x['ShowOnAir'].iat[0] == 0 ) | (x['AfterPremier'].iat[0] == 0), 0, 1) return x df['EverOnAir'] = 1 print df.groupby('ID').apply(f) ShowOnAir AfterPremier ID EverOnAir 0 0 0 a 0 1 0 1 a 1 2 1 1 a 1 3 1 1 b 1 4 1 0 b 1 5 0 0 b 1 6 0 1 c 0 7 1 0 c 1 8 0 0 c 1

background-attachment: scroll