在python中读取csv文件,但列名被移位

时间:2017-09-19 04:26:36

标签: python

我正在尝试使用以下代码从txt文件中读取数据:

                 a           b         c         d         e         f  \
2000000   -65.949737  167.359438 -9.773884 -0.102801 -9.768339 -0.102985   
31990000  -44.882304  149.629367 -9.776339 -1.058768 -9.772569 -1.056513   
61980000  -43.898586 -155.579474 -9.777945 -1.976854 -9.775798 -1.969913   
91970000  -55.187924 -100.870064 -9.781525 -2.895683 -9.778132 -2.877063   
121960000 -46.330680  126.798745 -9.783116 -3.803569 -9.779577 -3.782513   
                   g           h   i  
2000000   -68.031965  -40.420658 NaN  
31990000  -58.193022   93.591063 NaN  
61980000  -53.468840  132.634058 NaN  
91970000  -53.542601  171.131622 NaN  
121960000 -53.124162 -142.028566 NaN 

但是,以下是我得到的,这不是我想要的。列名向右移动,因此有一个额外的列生成了NaN(我想要的是列名'a'应该对应于以2000000开头的列,并且在左边应该有一列索引第一栏)。任何专家都可以告诉我原因以及如何解决这个问题?非常感谢。

beforeSend: function(){$.event.trigger('ajaxStart');}

1 个答案:

答案 0 :(得分:0)

我能够通过用空格而不是制表符分隔第一列来重现您描述的行为。您可能想检查输入是否存在类似问题。这可以通过

轻松完成
print(data["a"])

如果打印两列(实际上不是两列而是一列类型为“string”),那么问题很可能是由错误的分隔符引起的。如果数字没有被给定的分隔符(在您的情况下为选项卡)分隔,Pandas会将输入“1234 1234”解释为文本字符串。

您可以使用参数delim_whitespace=True代替sep='\t'来解决此类问题。这将使pandas使用任何空格组合作为分隔符。 (另请参阅pandas docs。)

修改

我现在意识到换行后的数据会再次显示示例中第一列的值。这表明第一列以某种方式被解释为索引。因此,我不相信我的回答会对你有所帮助。我保留在这里,以防有人遇到我描述的问题并阅读你的问题。