我有一个csv文件,如下所示:
name,row,column,length_of_field
AB000M,8,12,1
AB000M,9,12,1
AB000M,10,0,80
AB000M,10,12,1
AB000M,11,1,1
AB000M,21,0,80
AB000M,22,0,80
我试图做的是,每当列字段为0时,将字段长度添加到列中,行应该减1。另外,如果后续行中的列再次为0,则将第一个字段长度添加到列中,将第一次出现的行减少1,并将字段长度一起添加。然后删除旧的行
因此,在上述csv中,“AB000M,10,0,80”将变为“AB000M,9,80,80”,并且
“AB000M,21,0,80
AB000M,22,0,80”--这两条线应替换为“AB000M,20,80160”
我试图通过这段代码实现这一点,但它不起作用:
df = pd.read_csv("file.csv")
for ind in df.index:
if ind >= len(df)-1:
break
if df['column'][ind] == 0 and df['column'][ind + 1] != 0:
df['row'][ind] -= 1
df['column'][ind] = 80
elif df['column'][ind] == 0 and df['column'][ind + 1] == 0:
df['row'][ind] -= 1
df['column'][ind] = 80
df['length_of_field'][ind] += df['length_of_field'][ind + 1]
df.drop([df.index[ind + 1]], axis=0)
这是一个可能对你有用的例子
样本数据:
解决方案:
结果:
相关问题 更多 >
编程相关推荐