Python 将Dataframe列同时包含字符串和浮点数

Python 将Dataframe列同时包含字符串和浮点数,python,pandas,replace,dataframe,Python,Pandas,Replace,Dataframe,我有一个数据框,其中一列包含字符串和浮动 该列名为“值”,其值为“AAA”、“韩国”、“123456.78”和“5000.00” 前两个值显然是字符串,最后一个值显然是浮点值。第三个值也应该是一个浮点值,但由于逗号的缘故,我的代码的下一步将其视为一个字符串 对于我来说,有没有一种简单的方法可以删除那些真正是浮点数的值的逗号,但保留那些真正是字符串的值的逗号?所以“Korea,Republic of”保持不变,但“123456,78”改为“123456.78” 谢谢。首先,您的Pandas列不包含

我有一个数据框,其中一列包含字符串和浮动

该列名为“值”,其值为“AAA”、“韩国”、“123456.78”和“5000.00”

前两个值显然是字符串,最后一个值显然是浮点值。第三个值也应该是一个浮点值,但由于逗号的缘故,我的代码的下一步将其视为一个字符串

对于我来说,有没有一种简单的方法可以删除那些真正是浮点数的值的逗号,但保留那些真正是字符串的值的逗号?所以“Korea,Republic of”保持不变,但“123456,78”改为“123456.78”


谢谢。

首先,您的Pandas列不包含字符串和浮点数,因为列包含同构类型。如果一个条目是字符串,那么所有条目都是字符串。您可以通过执行以下操作来验证这一点(假设数据帧是
df
,列是
c
):

注意类型应该类似于
Object

话虽如此,您可以将字符串列转换为不同的字符串列,其中表示数字的字符串删除逗号。这对于进一步的操作可能很有用,例如,当您希望查看哪些条目可以转换为
float
s时。这可以按如下方式进行

首先,编写如下函数:

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
的类型将是字符串。

显示日期数据框和代码。所有值都是字符串。熊猫中的一列只能有一种数据类型。您需要两列,一列用于字符串,另一列用于浮点数。
>>> df.c = df.c.apply(remove_commas_from_numbers)