2017-05-31 44 views
0

感谢您检查我的问题。通过Python的迭代CSV无关输出

我在Windows 7上使用Python 2.7。我的目标是从原始CSV文件中提取一些数据(ErrorCodeHEX)。 这里是原始数据(从CSV文件):

AngleInDegrees,DistInMM,Intensity,ErrorCodeHEX 
0,2221,259,0 
1,2225,244,0 
2,2213,172,0 
3,2222,98,0 
4,2225,87,0 
5,2228,82,0 
6,2228,84,0 
7,2238,82,0 
8,2229,64,0 
9,2233,44,0 
10,2314,17,0 
11,2512,8,0 
12,0,0,8035 
13,0,0,8035 
14,0,0,8035 
15,0,0,8035 
16,0,0,8035 
17,0,0,8035 
18,0,0,8003 
19,0,0,8035 
20,0,0,8035 

我想提取ErrorCodeHEX列,使样子:ErrorCodeHEX | 0 | 0 | 0 |...

不过,我从我的Python代码得到包括不相关的数据(0到359):

ErrorCodeHEX  
0 0 
1 0 
2 0 
3 0 
4 0 
5 0 
6 0 
7 0 
8 0 
9 0 
10 0 
11 0 
12 8035 
13 8035 
14 8035 

有线是,我试图对“DistInMM”和“强度”列中的类似的代码,它们很好地工作。 (输出只是在一行中的列)

所以我很困惑它为什么不能在'错误'列上工作?

请参阅代码:

高清lds_test(个体经营):

def my_range(start, end, step): 
    while start <= end: 
     yield start 
     start += step 

# gain distance info 
for i in my_range(1, len(result) - 3, 3): 
    print result[i] 
    log.write(result[i] + ',') 
    result[i] += result[i] 

# gain intensity info 
for i in my_range(2, len(result) - 3, 3): 
    print result[i] 
    log.write(result[i] + ',') 
    result[i] += result[i] 

# gain error info 
for i in my_range(3, len(result) - 3, 3): 
    print result[i] 
    log.write(result[i] + ',') 
    result[i] += result[i] 
+0

'result'和ho是什么样的对象你是从你的文件中获得它吗?你所展示的代码都不应该产生你描述的不想要的输出,但是我再也看不到它可能产生你想要的输出(你正在写逗号分隔的文本,而不是使用填充的垂直条)。你能澄清一下你的期望和发生了什么吗? – Blckknght

回答

0

你可以用大熊猫尝试,这将是更快,更容易:

import pandas as pd 
df = pd.read_csv('your.csv') 
result = "|".join([df.columns[-1]]+map(str, list(df['ErrorCodeHEX']))) 
result 

输出:

'ErrorCodeHEX|0|0|0|0|0|0|0|0|0|0|0|0|8035|8035|8035|8035|8035|8035|8003|8035|8035' 
+0

嗨,小小,谢谢你让我回来。是的,我同意熊猫是一个有用的数据分析包。但由于某种原因,我在安装熊猫后得到了一个ImportError'No module named pandas'。所以现在很困惑...... –

+0

这意味着你安装了不正确的熊猫,你能分享你的完整代码吗?您的上述代码无法定位您的问题。 –