2016-04-15 147 views
0

我想将列名放入从csv文件调用的数据集。 我的代码完全正常。如何使用csv文件命名列

DF2 = pd.DataFrame(data=DF1,index=SKU, 
    columns=['USER1','USER2','USER3','USER4','USER5','USER6']) 

6列。

我有大约50 +列,我想从命名为USERID的csv文件中读取列名,而该文件存储在本地而不是键入列表。我该怎么做?

下面的代码没有工作

USERID = pd.read_csv("C:\EVALUATE\USERID.csv") 
DF2 = pd.DataFrame(data=DF1,index=SKU, columns=USERID) 

有什么建议?

+0

什么是打印的'输出( USERID)'? – Francesco

+0

USERID.csv文件的格式是什么?它是在第一行中给出列名的单行文件吗?或者它们分开,每行一个名称。 –

回答

1

请问文件必须以CSV格式 - 您只需pipe the column names from standard input作为由splitting the input lines空格分隔字流,然后chaining them together可以:?

import fileinput 
import itertools 

USERID = itertools.chain(*(line.split() for line in fileinput.input())) 
DF2 = pd.DataFrame(data=DF1,index=SKU, columns=USERID) 

然后,因为你有一个文件USERID.txt看起来像这样:

USER1 USER2 
USER3 
USER4 USER5 
USER6 

...您可以输入eg python DF2.py < USERID.txt或者在POSIX shellin a Windows shelllist(USERID)看起来像['USER1','USER2','USER3','USER4','USER5','USER6']

唯一的缺点是你不能在列名中加空格,但为了适应这个要求,可以很容易地改变这些代码和数据格式。

最后,如果由于某种原因,你真的不想管,从标准输入数据,就可以直接在Python像这样阅读:

import itertools 

with open("C:\EVALUATE\USERID.txt", "r") as USERID_instream: 
    USERID = itertools.chain(*(line.split() for line in USERID_instream)) 
DF2 = pd.DataFrame(data=DF1,index=SKU, columns=USERID) 
+0

谢谢,所有这3个都是好主意。它工作完美!谢谢! – Anu

+0

如果你真的想感谢我,接受我的答案,因为我目前正在为一些额外的声望点进行拖网;) – errantlinguist

+1

@ errantlinguist。完成,接受了答案 – Anu