【问题标题】:How can I add comma into existing value in dataframe? Pandas如何将逗号添加到数据框中的现有值中?熊猫
【发布时间】:2020-11-22 10:07:59
【问题描述】:

我从一个网站上抓取了一个数据框,但在抓取过程中我丢失了值中的逗号,因此如下所示:

name   price 
x       100
y       89
z       123584

现在我必须修改“价格”列中的值,方法是在第二个位置的每个值中添加逗号,按右计算。结果应该是这样的:

name   price 
x       1,00
y       0,89
z       1235,84

你有什么想法我可以实现这个吗?

最好的问候和感谢您的帮助

【问题讨论】:

    标签: python-3.x pandas dataframe replace comma


    【解决方案1】:

    我们可以在这里尝试使用str.replace

    df['price'] = df['price'].astype('str').str.replace(r'^(\d{2})$', '0\\1')
                                           .str.replace(r'^(\d+)(\d{2})$', '\\1,\\2')
    

    str.replace 的第一次调用会为仅包含两个(十进制)数字的价格添加前导零。第二次调用在最后两位小数之前插入逗号分隔符。

    【讨论】:

    • 感谢您的回复和帮助,但我在“价格”列中只有 NaN 值。也许我应该添加价格列中的值是“对象”(我使用 df.dtypes 检查)
    • @Tmiskiewicz 尝试使用astype('str') 以及我的相同逻辑首先将price 转换为字符串。
    • 你的答案也有效:) 这个提示转换成字符串是关键,所以感谢你的帮助
    【解决方案2】:

    我们可以分割你的字符串并添加逗号:

    df['price'].str[:-2] + ',' + df['price'].str[-2:]
    
    0       1,00
    1        ,89
    2    1235,84
    Name: price, dtype: object
    

    或者我们可以使用 str.catsep 参数:

    df['price'].str[:-2].str.cat(df['price'].str[-2:], sep=',')
    
    0       1,00
    1        ,89
    2    1235,84
    Name: price, dtype: object
    

    【讨论】:

    • 感谢您的帮助!我尝试使用您的两个答案,这很奇怪,因为它仅更改了列中的部分值,其余部分为 NaN。我看不出为什么它只改变了部分值的模式......
    • 我知道了。我将一种列更改为字符串(之后我不得不从字符串“.0”中删除,因为它以某种方式显示)并且我使用了您的第一个答案,它工作得很好而且很流畅。感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 2018-10-26
    • 2021-03-26
    • 2013-07-06
    • 1970-01-01
    相关资源
    最近更新 更多