Pandas - 用某些东西替换数据框中的双引号(“)

问题描述 投票:0回答:1

我正在为自己制作一个小项目,我将两个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')

提前致谢。

python pandas replace concat
1个回答
0
投票

你可以这样做,但它会将你的非字符串列转换为字符串1(参见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('"', ''))

或者更简单,只需打开文件并用所需的字符替换所有双引号。无需将数据插入DataFrame即可执行此操作。

最好

© www.soinside.com 2019 - 2024. All rights reserved.