【发布时间】:2019-09-24 23:48:06
【问题描述】:
我有一个包含 German Characters 的数据集。 当导入 11 个编码为“ISO-8859-1”或“latin-1”的数据集时,德国城市名称的列很好,但是当使用具有相同编码的 pd.concat() 时,城市名称会发生变化。
encoding='utf-8-sig' 不起作用和
的输出import sys
print(sys.stdout.encoding)
是 UTF-8
# Importing the dataset
skill1 = pd.read_csv('./SkillWizardCityAerospaceEngineering26april.csv',encoding='ISO-8859-1')
skill2 = pd.read_csv('./SkillWizardCityBeautyandCosmetics26april.csv',encoding='ISO-8859-1')
skill3 = pd.read_csv('./SkillWizardCityBusinessSuportFunction26april.csv',encoding='ISO-8859-1')
对于所有这些 csv
print(skill1.CityName.unique())
它给了 [“柏林”“科隆”“多特蒙德”“杜塞尔多夫”“法兰克福”“哈雷”“汉堡” “汉诺威” “海德堡” “英戈尔施塔特” “基尔” “曼海姆” “慕尼黑” '诺德施泰特' '雷根斯堡' '斯图加特']
合并后
extension = 'csv'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]
#combine all files in the list
combined_csv = pd.concat([pd.read_csv(f,encoding='ISO-8859-1') for f in all_filenames ],sort=True)
combined_csv.CityName.unique()
结果是: array(['柏林', '科隆', '多特蒙德', 'D‚‚ƒÃƒÂƒÃ‚‚‚‚‚¼sseldorf', “法兰克福”、“哈勒”、“汉堡”、“汉诺威”、“海德堡”、 “英戈尔施塔特”、“基尔”、“曼海姆”、“慕尼黑”、“诺德施泰特”、 “雷根斯堡”、“斯图加特”、“奥格斯堡”、“比勒费尔德”、“波恩”、 “不来梅”、“开姆尼茨”、“达姆施塔特”、“德累斯顿”、“爱尔福特”、“埃森”、 'G‚‚‚ƒÃƒ‚ƒÃ‚‚‚‚‚‚‚¶ttingen', '莱比锡','美因茨',
我希望它是 [“柏林”“科隆”“多特蒙德”“杜塞尔多夫”“法兰克福”“哈雷”“汉堡” “汉诺威” “海德堡” “英戈尔施塔特” “基尔” “曼海姆” “慕尼黑” '诺德施泰特' '雷根斯堡' '斯图加特'] 我不想手动更改它们,我想要一个保留所有特殊字符的解决方案,因为还有其他列受到影响。
【问题讨论】:
-
无法使用 Python 3.6 和 pandas 0.23.4 进行复制。您应该显示您正在使用的版本。
-
我使用的是 Python 3.7.1 而 pd.__version__ 是 '0.23.4'
-
嗯,这些是最新版本。我怀疑
glob.glob返回了一个损坏的文件。 -
无论如何我可以连接 11 个文件并保留特殊字符吗? , UTF8 编码根本不起作用“'utf-8' 编解码器无法解码位置 8 的字节 0xfc:无效的起始字节”谢谢“
标签: python pandas csv encoding concat