这个问题有点类似,但有点复杂。
假设我有这张table:
data = {'column1': ['A1', 'A1', 'A1', 'A1'],
'column2': ['A9', 'A1', 'A8', 'A1'],
'column3': ['D1', 'D1', 'D1', 'D1'],
'column4': ['A6', 'A2', 'A3', 'A4'],
'column5': ['H1', 'H1', 'H1', 'H1'],
'column6': ['A4', '', '', 'A3'],
'column7': ['A5', '', '', 'A9']}
df = pd.DataFrame(data)
+---------+---------+---------+---------+---------+---------+---------+
| column1 | column2 | column3 | column4 | column5 | column6 | column7 |
+---------+---------+---------+---------+---------+---------+---------+
| A1 | A9 | D1 | A6 | H1 | A4 | A5 |
| A1 | A1 | D1 | A2 | H1 | | |
| A1 | A8 | D1 | A3 | H1 | | |
| A1 | A1 | D1 | A4 | H1 | A3 | A9 |
+---------+---------+---------+---------+---------+---------+---------+
这里我的目标是重置每行包含“A”的所有值的数字对应物,从A1开始。如果“A1”在同一行中再次出现,则移到下一个单元格。此外,不为“A”的值和空白应被忽略。
+---------+---------+---------+---------+---------+---------+---------+
| column1 | column2 | column3 | column4 | column5 | column6 | column7 |
+---------+---------+---------+---------+---------+---------+---------+
| A1 | A2 | D1 | A3 | H1 | A4 | A5 |
| A1 | A1 | D1 | A2 | H1 | | |
| A1 | A2 | D1 | A3 | H1 | | |
| A1 | A1 | D1 | A2 | H1 | A3 | A4 |
+---------+---------+---------+---------+---------+---------+---------+
2条答案
按热度按时间apeeds0o1#
试试这个:
6jjcrrmo2#
如果我记得你有一个similar question,你可以使用类似的
cumsum
逻辑和掩码:输出: