如何将逗号添加到数据框中的现有值中?熊猫
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.cat
和 sep
参数:
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”中删除,因为它以某种方式显示)并且我使用了您的第一个答案,它工作得很好而且很流畅。感谢您的帮助:)以上是关于如何将逗号添加到数据框中的现有值中?熊猫的主要内容,如果未能解决你的问题,请参考以下文章