如何将逗号添加到数据框中的现有值中?熊猫

Posted

技术标签:

【中文标题】如何将逗号添加到数据框中的现有值中?熊猫【英文标题】: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

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

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

【问题讨论】:

【参考方案1】:

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

df['price'] = df['price'].astype('str').str.replace(r'^(\d2)$', '0\\1')
                                       .str.replace(r'^(\d+)(\d2)$', '\\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”中删除,因为它以某种方式显示)并且我使用了您的第一个答案,它工作得很好而且很流畅。感谢您的帮助:)

以上是关于如何将逗号添加到数据框中的现有值中?熊猫的主要内容,如果未能解决你的问题,请参考以下文章

如何使用嵌套字典列表展平熊猫数据框中的列

如何从熊猫数据框中的列中删除字符串值

如何将文本文件中的原始数据加载到熊猫数据框中?

如何将数据框中的人口单元格与现有数据框合并和重复?

熊猫数据框列有带逗号的字符串如何将其转换为列表[关闭]

如何一次将函数应用于熊猫数据框中的多个列