我正在为自己做一个小项目,其中我将两个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')
谢谢。
答案 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中即可。
最佳