Панды - замените двойную кавычку (") в кадре данных чем-то - PullRequest
0 голосов
/ 13 марта 2019

Я делаю небольшой проект для себя, где объединяю два csv-файла с pd.concat()

Как видно из рисунка ниже, к данным из каждого листа добавлены двойные кавычки, которые я объединил «данные из листа 1», «данные из листа 2» пример из набора данных

Я хочу удалить двойные кавычки из CSV-файла, но когда я использую:

 df = df.replace('"', '', regex=True) 

ничего не происходит.

если я использую:

df = df.replace('e', 'x', regex=True) 

отлично работает

Вот мой код:

import pandas as pd
import xlrd
import os
from pathlib import Path
import csv

#path of the file we read from
filename = os.path.join('..', 'C:\\prosjekt_lisensrapport\\201902_ModulesLicensesReport.xlsx')

sheet_names = [0,1]

dfs = pd.read_excel(filename,
                sheet_name=sheet_names)

pd.concat((df.assign(source=sheet) for sheet, df in dfs.items()), ignore_index=True)

def sheets_to_df(filename, sheet_names):
    df_dict = pd.read_excel(filename, sheetname=sheet_names)
    return pd.concat(
        (df.assign() for sheet, df in dfs.items()), axis=1, join='inner')


    
df = sheets_to_df(filename, sheet_names)

df = df.replace('"', '', regex=True)

df.to_csv('testResult.csv', sep=',', encoding='utf-8')

Заранее спасибо.

1 Ответ

0 голосов
/ 13 марта 2019

Вы можете сделать это, но он преобразует ваши нестроковые столбцы в строку один (см. этот пост ):

for i, col in enumerate(df.columns):
    df.iloc[:, i] = df.iloc[:, i].str.replace('"', '')

Если вам все равно, вы можете использовать applymap ()

df = df.applymap(lambda x: x.replace('"', ''))

Или намного проще, просто откройте файл и замените все двойные кавычки на нужный вам символ.Для этого не нужно вставлять свои данные в DataFrame.

Лучший

...