【问题标题】:Replacing Periods in DF's Columns替换 DF 列中的期间
【发布时间】:2018-09-11 07:38:39
【问题描述】:

替换 DF 列中的句点

我想知道是否有一种有效的方法来替换 pandas 数据框中的句点,而无需遍历每一行并在该行上调用.replace()。

import pandas as pd 
df = pd.DataFrame.from_dict({'column':['Sam M.']})
df.column = df.column.replace('.','')

print df

结果

   column

0  None

想要的结果

   column

0  Sam M

【问题讨论】:

    标签: python pandas replace


    【解决方案1】:
    df['column'].str.replace('.', '', regex=False)
    
    0    Sam M
    Name: column, dtype: object
    

    【讨论】:

    • 我读到将正则表达式更改为 False 仅在字符串具有整个替换帧时才使语句为真。我不认为这会是一个问题,因为'。是单个字符。在重读 pandas.Series.str.replace 的 pandas 模块时,我意识到“。”在 Regex True 被解释为任何字符,你能解释一下为什么吗?
    • @SamMahle 那是给DataFrame.replace的。对于Series.str.replace,没关系。
    【解决方案2】:

    因为.是一个正则表达式特殊字符,所以把'\'放在前面就好了:

    解决方案:

    df['column'].str.replace('\.','')
    

    例子:

    df['column']=df['column'].str.replace('\.','')
    print(df)
    

    输出:

       column
    0  Sam M
    

    【讨论】:

    • 当然,这是一个有效的替代方案。但是如果不需要正则表达式,最好取消设置正则表达式开关,让替换是纯字符串的。
    • 为什么普通的 python 字符串替换不考虑这个正则表达式,但 pandas.Series.str.replace 呢?
    • @SamMahle 因为pandas 使用正则表达式的东西很多,所以正则表达式很有用(所以让pandas 更有用),如果有一个Series,你想从所有字符串中删除所有整数,请@987654326 @
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 2019-12-22
    • 2017-07-03
    • 2021-07-02
    • 1970-01-01
    相关资源
    最近更新 更多