我有一个数据框,其中一列包含字符串和浮点数。
该列名为' Value'具有像" AAA","韩国,共和国"," 123,456.78"和" 5000.00"。
前两个值显然是字符串,最后一个显然是浮点数。第三个值也应该是一个浮点数,但是由于逗号,我的代码的下一步将它看作一个字符串。
我是否有一种简单的方法可以删除那些真正浮动的值的逗号,但是将它们保存为真正的字符串值?所以"韩国,共和国"留下来,但是" 123,456,78"转换为" 123456.78"。
感谢。
答案 0 :(得分:0)
首先,您的Pandas列不包含字符串和浮点数,因为列包含同类型。如果一个条目是一个字符串,那么所有条目都是。您可以通过执行以下操作来验证这一点(假设DataFrame为df
且列为c
):
>>> df.dtypes
并注意到类型应该类似于Object
。
话虽如此,您可以将字符串列转换为不同的字符串列,其中表示数字的字符串已删除逗号。这可能对进一步的操作很有用,例如,当您希望查看哪些条目可以转换为float
时。这可以按如下方式完成。
首先,写一个像:
这样的函数import re
def remove_commas_from_numbers(n):
r = re.compile(r'^(\d+(?:,\d+)?.+)*$')
m = r.match(n)
if not m:
return n
return n.replace(',', '')
remove_commas_from_numbers('1,1.')
然后,您可以执行以下操作:
>>> df.c = df.c.apply(remove_commas_from_numbers)
同样,重要的是要注意df.c
的类型将是字符串。