df中筛选i行的iu34列的值为2,但是有的行的iu34的值是由0经过几行变为了2,有的是由1经过几行变为了2,如何判断i行的iu34的值是由几变来的。python代码
时间: 2024-02-17 17:03:16 浏览: 73
可以用以下的Python代码来实现:
```python
# 假设df是你的数据框
# i是你要筛选的行数
i = 0
# 找到iu34列的起始位置
start_idx = df.columns.get_loc("iu34")
# 获取i行iu34列的值
val = df.iloc[i, start_idx]
# 如果是2,那么需要进一步判断
if val == 2:
# 从iu34列的起始位置开始向前遍历
for j in range(start_idx - 1, -1, -1):
# 如果当前位置的值是0或1,那么需要继续往前遍历
if df.iloc[i, j] in [0, 1]:
# 找到最后一个0或1的位置
k = j
while k >= 0 and df.iloc[i, k] == df.iloc[i, j]:
k -= 1
# 如果最后一个0或1的位置后面的值都是2,那么iu34列的值就是由0或1经过几行变为了2
if all(df.iloc[i, k+1:start_idx] == 2):
print(f"iu34列的值是由{df.iloc[i, j]}经过{start_idx-k-1}行变为了2")
else:
print("无法确定iu34列的变化方式")
break
# 如果当前位置的值已经是2,那么iu34列的值就是由0变为2
elif df.iloc[i, j] == 2:
print("iu34列的值是由0变为2")
break
else:
print("iu34列的值不是2")
```
这段代码会根据你的要求输出iu34列的变化方式,如果无法确定变化方式,那么会输出无法确定的信息。
阅读全文