我想返回其位置与前一列位置相比下降的行项目。有没有更好/更简单的方法? 我有一个dataframe,其中有按顺序排列的项目,并且顺序可以在下一列(周)中更改:
s1 = pd.Series(["item1", "item2", "item3"])
s2 = pd.Series(["item2", "item1", "item3"])
s3 = pd.Series(["item3","item2", "item1"])
data = pd.DataFrame({"week1":s1, "week2":s2, "week3":s3})
# I did it like this
counter1 = 0 # iterate all columns
idxfirst = 0 # manually index
idxsecond = 0 # manually index
numberofcolumns = (len(data.columns))-1
for i in range(numberofcolumns):
idxfirst = 0
for i in data.iloc[:,counter1]:
idxsecond = 0
for j in data.iloc[:,(counter1+1)]:
if i == j and idxfirst < idxsecond:
print(i)
idxsecond += 1
idxfirst +=1
counter1 +=1
prints:
item1 # because position dropped from 1 to 2 in second week
item2 # because position dropped from 1 to 2 in second week
item1 # because position dropped from 2 to 3 in third week
这里有一种完全矢量化的方法,通过“融合”数据帧,将其连接到自身,然后查找满足以下三个条件的行:
输出:
您可以使用
enumerate()
简化代码:相关问题 更多 >
编程相关推荐