python - Pandas : Replace string column values

标签 python string pandas

我有一个 pandas 数据框,其中包含我正在尝试格式化的成本列。基本上,替换字符串并将其标准化,因为成本值是从不同来源提取的。还有一些'NaN'

这是一些示例数据:

$2.75 
nan
4.150000
25.00
$4.50

我有以下代码,用于标准化列中值的格式。

for i in range(len(EmpComm['Cost(USD)'])):

    if (pd.isnull(EmpComm['Cost(USD)'][i])):
        print(EmpComm['Cost(USD)'][i], i)
        #EmpComm['Cost(USD)'] = EmpComm['Cost(USD)'].iloc[i].fillna(0, inplace=True)

    if type(EmpComm['Cost(USD)'].iloc[i]) == str:
       #print('string', i)
       EmpComm['Cost(USD)'] = EmpComm['Cost(USD)'].iloc[i].replace('$','')

输出:

0      2.75
1      2.75
2      2.75
3      2.75
4      2.75
5      2.75

所有值均采用 2.75。它正在对所有列值运行第二个 if 语句,因为它们被格式化为字符串。

我的问题是:你会如何格式化它?

最佳答案

一般来说,您应该避免手动 for 循环,并尽可能使用 Pandas 的矢量化功能。在这里,您可以利用 pd.to_numeric 来测试和转换系列中的值:

s = pd.Series(['$2.75', np.nan, 4.150000, 25.00, '$4.50'])

strs = s.astype(str).str.replace('$', '', regex=False)
res = pd.to_numeric(strs, errors='coerce').fillna(0)

print(res)

0     2.75
1     0.00
2     4.15
3    25.00
4     4.50
dtype: float64

关于python - Pandas : Replace string column values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52580052/

相关文章:

python - 从 python 脚本返回值到 shell 脚本

Python 正则表达式与其他正则表达式工具所匹配的不匹配

python - 将 Fortran 复数读入 Python

string - 连接两个字符串,其中第一个字符串最后有一个空格 Matlab

python - 如何合并列表中的相似项目

python - 如何使用 pandas/matplotlib 绘制/管理 2 列分类数据?

python - 融化 pandas 中的分类列

Python OOP 继承类

javascript - 在没有任何内置方法的情况下对字符串进行排序

python - Pandas 中的数据透视表 - 不可排序的类型