删除Pandas中值内的所有引号

时间:2014-01-31 22:30:38

标签: python pandas dataframe

我想删除所有列中的所有双引号和数据框中的所有值。所以,如果我有一个像

这样的值
potatoes are "great"

我想返回

potatoes are great

DataFrame.replace()允许我这样做,如果我知道我正在改变的整个值,但有没有办法删除单个字符?

3 个答案:

答案 0 :(得分:12)

您可以使用str.replace在每个系列/列上执行此操作:

In [11]: s = pd.Series(['potatoes are "great"', 'they are'])

In [12]: s
Out[12]: 
0    potatoes are "great"
1                they are
dtype: object

In [13]: s.str.replace('"', '')
Out[13]: 
0    potatoes are great
1              they are
dtype: object

我会担心在整个DataFrame中执行此操作,因为它还会将非字符串列更改为字符串,但是您可以遍历每列:

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

如果您确定每个项目都是字符串,则可以使用applymap

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

答案 1 :(得分:5)

使用DataFrame.apply()Series.str.replace()

import numpy as np
import pandas as pd
import random

a = np.array(["".join(random.sample('abcde"', 3)) for i in range(100)]).reshape(10, 10)
df = pd.DataFrame(a)
df.apply(lambda s:s.str.replace('"', ""))

如果只有string列:

df.ix[:,df.dtypes==object].apply(lambda s:s.str.replace('"', ""))

答案 2 :(得分:1)

这将做你想要的:

returnlist=[]
for char in string:
    if char != '"':
         returnlist.append(char)
string="".join(returnlist)