从SQL查询中,我提取了商店中发生的活动的列表,其中一列具有名为“ STATUS”的标签。
每次“状态”标签更改时,我都希望向下移动数据框并拉整行
headerlist = df.columns.values.tolist()
newdf = pd.DataFrame(columns=headerlist)
for index, row in df.iterrows():
if df.STATUS[i] != df.STATUS[i-1]:
newdf = newdf.append(i)
我在这里上传了一张图片,该图片代表了我要实现的目标。
提前谢谢
答案 0 :(得分:0)
不确定这是最好的答案:(对Python来说也是新来的)
假设您的原始数据帧是df
for even, odd in zip(df.iloc[::2], df.iloc[1::2]):
if even.status!=odd.status:
#do you append here
您应该提供一个可运行的df示例,以便我们可以在发布代码之前运行我们的代码,以确保它确实有效
答案 1 :(得分:0)
我想我明白了!发布前我尝试了一个小时,发布后立即点击
它比for循环简单得多。
我创建了一个名为“ MATCH”的新列,该列的布尔值为“ STATUS”的新值是否等于前一个值。
然后我仅按df.STATUS == False
进行过滤'''python df ['MATCH'] = df.STATUS.eq(df.STATUS.shift())'''
答案 2 :(得分:-1)
尝试一下
df[df['STATUS'].ne(df['STATUS'].shift().bfill())]