我正在读取一个 csv 文件,从中我获得了这些列:
encoding = "UTF-8-SIG"
csv_file = "my/path/to/file.csv"
fields_cols_mapping = {
'brand_id': 'Brand',
'custom_dashboard': 'Custom Dashboard LO',
'custom_dashboard_isfeatured': 'Custom Dashboard LO - Is Featured',
'description': 'LODescription',
'is_active': 'TrainingIsActive',
'lo_id': 'LOID',
'lo_type_id': 'LOType',
'timestamp': 'Timestamp',
'title': 'LOTitle',
'training_version_id': 'TrainingVersion'
}
dataframe = pd.read_csv(
csv_file,
encoding=encoding,
sep='|',
usecols=[unicode(v) for v in fields_cols_mapping.values()],
dtype={ k: object for k in fields_cols_mapping.keys() },
)
但是,在使用 ipdb 检查时,我发现使用 read_csv
调用的解析器不会转换列名称Custom Dashboard LO – Is Featuresed
:
# debug
> /../../venvs/myvenv/lib/python2.7/site-packages/pandas/io/parsers.py(1140)__init__()
1138 col_indices = []
1139 for u in self.usecols:
-> 1140 if isinstance(u, string_types):
1141 col_indices.append(self.names.index(u))
1142 else:
ipdb> self
<pandas.io.parsers.CParserWrapper object at 0x10b134710>
ipdb> self.names
[u'LOType', u'LOID', u'LOTitle', u'TrainingVersion', u'LODescription', u'TrainingIsActive', u'Custom Dashboard LO', u'Brand', u'Custom Dashboard LO \u2013 Is Featured', u'Timestamp']
有人对我应该做什么有什么建议吗?
最佳答案
您的问题是数据框中的破折号与字典中的破折号不同。数据框中的一个是短划线(–
或 \u2013
),而字典中的一个是连字符(‐
或 \u2010
)。它们看起来很相似,但它们不是同一个字符,因此字符串不匹配。
关于python - Pandas - 在数据框中找不到列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39729995/