Pandas 将逗号替换为数据帧列中的小数点,使其成为数字

Pandas 将逗号替换为数据帧列中的小数点,使其成为数字,pandas,Pandas,如何将b列到d列中的逗号替换为点,并使这些列成为数字? 列a或任何数量的前导列应保持不变,并且可以包含逗号您可以尝试以下方法: import pandas as pd df = pd.DataFrame([["one", 1.2, "", "4,3"], ["two","1,7", "2,4", 0.55], ["three","", 5.4, "3,9"]], columns=['a','b','c','d']) 输出: df = df.set_index('a'

如何将b列到d列中的逗号替换为点,并使这些列成为数字? 列a或任何数量的前导列应保持不变,并且可以包含逗号

您可以尝试以下方法:

import pandas as pd    
df = pd.DataFrame([["one", 1.2, "", "4,3"],
   ["two","1,7", "2,4", 0.55],
   ["three","", 5.4, "3,9"]], 
   columns=['a','b','c','d'])
输出:

df = df.set_index('a')
df.apply(lambda x: x.str.replace(',','.')).combine_first(df).apply(lambda x:pd.to_numeric(x,errors='coerce')).reset_index()
列A逗号测试 您可以尝试以下方法:

import pandas as pd    
df = pd.DataFrame([["one", 1.2, "", "4,3"],
   ["two","1,7", "2,4", 0.55],
   ["three","", 5.4, "3,9"]], 
   columns=['a','b','c','d'])
输出:

df = df.set_index('a')
df.apply(lambda x: x.str.replace(',','.')).combine_first(df).apply(lambda x:pd.to_numeric(x,errors='coerce')).reset_index()
列A逗号测试
列a应该保留,不改变也可以包含逗号事实上我需要的是更复杂一点,前n列是文本,应该保持不变。其余的列应该转换为数字,但有些单元格使用小数点。对于这个小问题,它可以解决,但正如我所说,我的问题更一般,在数据帧的前端有几列需要保持不变。最重要的是,对于一个看似简单的问题,这个解决方案看起来相当复杂。我可以使用类似df.set_index:6的东西吗?a列应该保留,不变可以包含逗号。事实上,我需要的是更复杂一点,前n列是文本,应该保持不变。其余的列应该转换为数字,但有些单元格使用小数点。对于这个小问题,它可以解决,但正如我所说,我的问题更一般,在数据帧的前端有几列需要保持不变。除此之外,对于一个看似简单的问题,此解决方案看起来相当复杂。我可以使用类似df.set_index:6的东西吗?谢谢,这将使用:for col in df.columns[6:]:谢谢,这将使用:for col in df.columns[6:]:
import re    

for col in ['b', 'c', 'd']:
    df[col] = pd.to_numeric(df[col].apply(lambda x: re.sub(',', '.', str(x))))