以下代码显示错误。但是如果我删除usercols参数,它就可以工作。
from StringIO import StringIO
import pandas as pd
u_cols = ['page_id','web_id']
audit_trail = StringIO('''
page_id | web_id
3|0
7|3
11|4
15|5
19|6
''')
df = pd.read_csv(audit_trail, sep="|", usecols = u_cols )
ValueError:传递的标题名称与usecols不匹配
我需要使用u_cols列表,因为列标题是动态生成的。
答案 0 :(得分:6)
"名称"应该用来代替" usecolmns"
from StringIO import StringIO
import pandas as pd
u_cols = ['page_id','web_id']
audit_trail = StringIO('''
page_id | web_id
3|0
7|3
11|4
15|5
19|6
''')
df11 = pd.read_csv(audit_trail, sep="|", names = u_cols )
答案 1 :(得分:3)
这是因为|旁边的空白区域分隔符。当您运行pd.read_csv(audit_trail,sep="|")
时,您确实拥有[' page_id(空格)','(空格)web_id']而不是[' page_id' ' web_id'。]
我建议将以下正则表达式模式作为你的分隔符\s*\|\s*
传递,它将删除任何空格。分隔符。这是完整的解决方案......
u_cols = ['page_id','web_id']
"""page_id | web_id
3|0
7|3
11|4
15|5
19|6"""
df = pd.read_csv(StringIO(s),sep="\s*\|\s*",usecols = u_cols)
<强>输出强>
page_id web_id
0 3 0
1 7 3
2 11 4
3 15 5
4 19 6
答案 2 :(得分:0)
如果其他人遇到此错误,这就是我刚刚发生的情况:我使用 parse_dates=[[0,1]]
合并和解析两列中的日期并得到此错误。所以 names
参数应该包含与原始 csv 相同数量的列,所以我只是在列表中添加了额外的空字符串:names=['column1','','column2',...]
。