熊猫-将数据框中的doublequote(“)替换为

时间:2019-03-13 13:32:56

标签: python pandas replace concat

我正在为自己做一个小项目,其中我将两个csv文件与pd.concat()组合在一起

如下图所示,我将“工作表1的数据”,“工作表2的数据”组合而成的每个工作表的数据加了双引号 example from data set

我想从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 :(得分:0)

您可以执行此操作,但是它将把非字符串列转换为字符串一(请参见this post):

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

如果您不在乎,可以使用applymap()

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

或更简单的是,只需打开文件并将所有双引号替换为所需的char。无需将数据插入到DataFrame中即可。

最佳