【发布时间】:2017-09-04 05:35:58
【问题描述】:
我有一长串数据,有意义的数据夹在 0 值之间,如下所示
0
0
1
0
0
2
3
1
0
0
0
0
1
0
0 和有意义的值序列的长度是可变的。我想提取有意义的序列,将它们中的每一个都提取到数据框中的一行中。比如上面的数据可以抽取成这样:
1
2 3 1
1
我使用这段代码“切片”了有意义的数据:
import pandas as pd
import numpy as np
raw = pd.read_csv('data.csv')
df = pd.DataFrame(index=np.arange(0, 10000),columns = ['DT01', 'DT02', 'DT03', 'DT04', 'DT05', 'DT06', 'DT07', 'DT08', 'DT02', 'DT09', 'DT10', 'DT11', 'DT12', 'DT13', 'DT14', 'DT15', 'DT16', 'DT17', 'DT18', 'DT19', 'DT20',])
a = 0
b = 0
n=0
for n in range(0,999999):
if raw.iloc[n].values > 0:
df.iloc[a,b] = raw.iloc[n].values
a=a+1
if raw [n+1] == 0:
b=b+1
a=0
但我不断收到 KeyError: n,而 n 是第一行之后的行,其值不同于 0。
我的代码哪里出了问题?就速度和内存成本而言,有什么方法可以改进它吗? 非常感谢
【问题讨论】:
标签: python python-3.x pandas dataframe