我需要创建一个python代码来搜索"N"作为变量,在一个列 Dataframe 中具有相同值和不同值的连续行NaN,就像这样。我不知道如何用for循环来做,因为我不知道在每种情况下我在看哪一行。有什么想法可以做到这一点吗?
| 水果|2次匹配|5次匹配|
| - ------|- ------|- ------|
| 苹果|没有|没有|
| 钠氮|没有|没有|
| 梨|没有|没有|
| 梨|是的|没有|
| 梨|是的|没有|
| 梨|是的|没有|
| 梨|是的|是的|
| 钠氮|没有|没有|
| 钠氮|没有|没有|
| 钠氮|没有|没有|
| 钠氮|没有|没有|
| 钠氮|没有|没有|
| 香蕉|没有|没有|
| 香蕉|是的|没有|
- 更新:@Corralian测试解决方案**
counts = (df.groupby(df['Fruit'].ne(df['Fruit'].shift()).cumsum()) # virtual groups
.transform('cumcount').add(1) # cumulative counter
.where(df['Fruit'].notna(), other=0)) # set NaN to 0
N = 2
df['Matches'] = df.where(counts >= N, other='No')
执行最后一行时,VSCode向我返回"单步调试期间跳过帧"消息,并在上一个for循环中生成异常。
1条答案
按热度按时间f87krz0w1#
计算连续值并将NaN设置为0。计算出累积计数器后,只需检查计数器是否大于或等于
N
:输出:
例如,如果我需要将水果名称更改为"是"