python - 从整个数据框中删除一个字符

标签 python string pandas replace

我需要对 pandas 执行的一个常见操作是从 Excel 文件中读取表格,然后从所有字段中删除分号。这些列通常是混合数据类型,我在尝试执行以下操作时遇到了 AtributeError:

for col in cols_to_check:
    df[col] = df[col].map(lambda x: x.replace(';',''))

AttributeError: 'float' object has no attribute 'replace'

当我在替换之前将其包装在 str() 中时,我遇到了 Unicode 字符问题,例如

for col in cols_to_check:
    df[col] = df[col].map(lambda x: str(x).replace(';',''))

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 3: ordinal not in range(128)

在 excel 中这是一个非常简单的操作,只需将 ; 替换为空字符串即可。我怎样才能在 pandas 中为整个数据帧做同样的事情,而不管数据类型?还是我遗漏了什么?

最佳答案

您可以使用 DataFrame.replace并选择使用 subset:

df = pd.DataFrame({'A':[1,2,3],
                   'B':[4,5,6],
                   'C':['f;','d:','sda;sd'],
                   'D':['s','d;','d;p'],
                   'E':[5,3,6],
                   'F':[7,4,3]})

print (df)
   A  B       C    D  E  F
0  1  4      f;    s  5  7
1  2  5      d:   d;  3  4
2  3  6  sda;sd  d;p  6  3

cols_to_check = ['C','D', 'E']

print (df[cols_to_check])
        C    D  E
0      f;    s  5
1      d:   d;  3
2  sda;sd  d;p  6

df[cols_to_check] = df[cols_to_check].replace({';':''}, regex=True)
print (df)
   A  B      C   D  E  F
0  1  4      f   s  5  7
1  2  5     d:   d  3  4
2  3  6  sdasd  dp  6  3

关于python - 从整个数据框中删除一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42135409/

相关文章:

python - pypi opencensus-ext-azure 无法正常工作(多次发送相同的数据+不发送logging.info()跟踪)

java - 根据 If 语句切换变量

python - 使用 Python 中的正则表达式提取具有开始和结束匹配项的字符串文本部分

python - 如何用 python 中的字典替换部分列名?

python - 用于与多个 boolean 列/系列进行类似集合比较的矢量化 Pandas 方法

Python:Concurrent.Futures 错误 [TypeError: 'NoneType' 对象不可调用]

python - 从终端运行脚本时出现 ModuleNotFoundError

python - wxStyledTextControl 中的填充,没有结 block

mysql - 在 MySQL 中选择连接子字符串并替换

python - 修复 Pandas 中的一列 RPT 文件