python - 使用 pd.concat() 函数后出现问题 - 编码 latin-1 - 德语字符

标签 python pandas csv encoding concatenation

我有一个包含德语字符的数据集。 当导入编码为“ISO-8859-1”或“latin-1”的 11 个数据集时,德国城市名称列没问题,但是当使用具有相同编码的 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(['柏林', '科隆', '多特蒙德', '德塞尔多夫', “法兰克福”、“哈勒”、“汉堡”、“汉诺威”、“海德堡”、 '因戈尔施塔特'、'基尔'、'曼海姆'、'慕尼黑'、'诺德施塔特'、 '雷根斯堡'、'斯图加特'、'奥格斯堡'、'比勒费尔德'、'波恩'、 '不来梅', '开姆尼茨', '达姆施塔特', '德累斯顿', '爱尔福特', '埃森', 'G','廷根', '莱比锡','美因茨',

我预计会是这样 ['柏林''科隆''多特蒙德''杜塞尔多夫''法兰克福''哈勒''汉堡' '汉诺威' '海德堡' '因戈尔施塔特' '基尔' '曼海姆' '慕尼黑' ‘诺德施泰特’‘雷根斯堡’‘斯图加特’] 我不想手动更改它们,我想要一个能够保留所有特殊字符的解决方案,因为还有其他列受到影响。

最佳答案

这不是直接答案,但可能有助于更好地识别问题,并且它包含代码,因此将其作为答案发布。

我的建议是尝试确定编码错误的名称的来源。假设您没有名为“FILE_ORIGIN”的列,我会尝试以下操作:

def build_csv(file):
    df = pd.read_csv(file,encoding='ISO-8859-1')
    df['FILE_ORIGIN'] = file
    return df

combined_csv = pd.concat([build_csv(f) for f in all_filenames ],sort=True)
combined_csv.loc[:,['CityName', 'FILE_ORIGIN']].groupby('CityName').agg(lambda x: ','.join(x))

这应该显示出现编码错误的文件。

关于python - 使用 pd.concat() 函数后出现问题 - 编码 latin-1 - 德语字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56020486/

相关文章:

python - 从 Flask 下载 csv 格式的数据帧

python - 如何在 Pandas 中使用 groupby].transform ('count' )时计算唯一值

Python Twitter 工具 - 将多个用户添加到列表失败 (lists.members.create_all)

python - 如何使背景颜色与表单背景颜色相同?

python - Elasticsearch 滚动(扫描)到 Pandas DataFrame

python - CSV 阅读器在 Ubuntu 和 Windows 上的不同输出 - Python

Ruby - 来自散列的 CSV,每个键的值垂直存储

python - 如何仅在 Pandas 数据框的选定行和列上应用函数?

python - 按索引名称、整数索引拆分 Pandas 系列

python - Scikit : Problem returning Dataframe from imputer instead of Numpy Array