如何使用用户输入的值填充列?

时间:2015-04-20 15:17:46

标签: python-2.7 pandas

我想为导出到csv文件的数据添加日期列。幸运的是,文件由它们代表的日期标识。但是,我无法让列填满适当的用户输入值。这是我到目前为止的代码:

def read_file():
    user_input = raw_input("Please put cost folder with date in form Costmm.dd: ")
    path = r'C:\\Users\\CP\\documents\\' + user_input
    allFiles = glob.glob(path + '/*.csv')
    frame = pd.DataFrame()
    frame['Date'] = pd.Series()
    frame['Date'] = frame['Date'].astype(object).fillna(user_input)

    list = []
    for file in allFiles:
        df = pd.read_csv(file,index_col=None,header=0)
        list.append(df)
    frame =pd.concat(list,ignore_index=True)
    frame['Date'] = pd.Series()
    return(frame)

非常感谢任何和所有帮助!

1 个答案:

答案 0 :(得分:1)

如果我理解了以下内容之后你应该做些什么:

import datetime as dt
def read_file():
    user_input = raw_input("Please put cost folder with date in form Costmm.dd: ")
    path = r'C:\\Users\\CP\\documents\\' + user_input
    allFiles = glob.glob(path + '/*.csv')

    l = []
    for file in allFiles:
        df = pd.read_csv(file,index_col=None,header=0)
        l.append(df)
    frame =pd.concat(l,ignore_index=True)
    frame['Date'] = dt.datetime.strptime(user_input, '%m.%d')
    return frame

一些注意事项:

frame = pd.DataFrame()
frame['Date'] = pd.Series()
frame['Date'] = frame['Date'].astype(object).fillna(user_input)

上面的内容是多余的,因为你用pd.concat的结果覆盖了它。

对于list类型的变量名,请不要使用list使用类似df_list的内容。

要将字符串转换为日期时间,您可以使用dt.datetime.strptime并传递格式字符串。