我目前有以下数据框
并需要创建一个新的二进制数据框,它应用以下逻辑:
- 如果任何列中的值> = 1.5且前面的值<1.5,则显示1。
- 继续显示1,除非值<= 0,然后输入0。
因此,将此应用于上述应该产生:
知道如何最有效地做到这一点吗?
这是我认为应该起作用的方法。首先为每个现有列创建新列,这些列将包含向上移动一列的现有列。即如果A是0 1 1.5创建A1到1 1.5南U可以使用pandas shift来做到这一点。为所有列执行此操作然后,如果df是dataFrame的名称
not_found_zero=1
for row in df.iterrows():
if(not_found_zero):
if row['A']<=0:
row['A']=0
flag=0
else:
row['A'] =(row['A']>=1.5) & (row['A1']>=1.5))
else:
row['A']=0
对所有列执行此操作,并记住在移位后,A1的最后一列将为nan。完成后删除temperory行。