我在python + 7mil行中有一个巨大的数据框。我的一般问题是,每当我在该列中看到“#”时,都需要遍历一列并创建一个新的“数字”。因此,第一次看到#时,我会用1覆盖它,然后放下该行,然后在下一行中使用相同的数字,直到再次看到“#”,然后继续。
我已经有一些代码了,但是这是一个循环,非常慢!
i=0
j=0
while i <len(data):
if data.iloc[i][0] == '#':
j=j+1
data = data.drop(data.index[i])
else:
data.iloc[i][0] = j
i=i+1
return data
答案 0 :(得分:1)
尝试如下所示:
m = (data.iloc[:, 0] == '#')
data.iloc[:, 0] = m.cumsum()
data.drop(m.index[m], inplace=True)