Sublime3:从文件读取数据帧,由命令行参数给出

时间:2015-11-24 15:47:14

标签: python pandas dataframe command-line-arguments indentation

我一直在使用ipython笔记本,但是现在我应该转到脚本.py。在编写正常的文章时,在ipython中看似简单的事情变得更加困难(如果我误解了某些内容,请纠正我)。 因此,例如我需要从文件中读取数据帧(然后使用此数据帧执行某些操作),我希望在命令行中将该名称作为参数提供:

python myfile.py filename.csv

为此我写了以下脚本:

import pandas as pd
import numpy as np
import datetime
import time
import sys

def read_file(filesrc):
    df = pd.read_csv(filesrc, 
                     sep= '\t', 
                     names=['id', 'date', 'name', 'age'], 
                     parse_dates=['date'], 
                     infer_datetime_format=True)
    print "Reading file..."
    df1 = (df.drop(['id'], 1)
             .sort_index(by=['date'], ascending=True)
             .reset_index()
             .drop('index', 1))
    return df1.to_csv('just_df.csv')

def main():
    filesrc = sys.argv[1]
    read_file(filesrc)

if __name__ == '__main__':
    main()

但我总是错误:

  df1 = df.drop(['id'], 1).sort_index(by=['date'], ascending=True).reset_index().drop('index', 1)     
                                                                                            ^
    IndentationError: unindent does not match any outer indentation level

我注意标签和空间的限制,并且,在Sublime3中工作,在这种情况下,我没有关于丢失或额外缩进的警告,所以我很惊讶看到这个错误,我猜错了可能与脚本的其他部分,也许是从sys.argv[1]或其他地方阅读,所以您的帮助和建议将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

IndentationError只能是缩进错误!仔细检查一下。在Sublime上,尝试查看 - >缩进 - >将缩进转换为制表符...并查看该行是否超出缩进级别。