我想删除所有列中的所有双引号和数据框中的所有值。所以,如果我有一个像
这样的值potatoes are "great"
我想返回
potatoes are great
DataFrame.replace()允许我这样做,如果我知道我正在改变的整个值,但有没有办法删除单个字符?
答案 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)