在pandas中将excel文件中的逗号转换为点

nbewdwxp  于 2023-05-05  发布在  其他
关注(0)|答案(3)|浏览(194)

我在excel文件中有这样的列:

Numbers
   13.264.999,99
  1.028,10
756,4
  1.100,1

因此,当我用pd.read_excel加载它时,一些数字如756,4被转换为756.4并成为浮点数,而上面例子中的其他3个数字保持不变,是字符串。
现在我想让列以这种形式(类型float):

Numbers
13264999.99
1028.10
756.4
1100.1

但是,当使用以下代码从excel转换加载的列时:

df["Numbers"]=df["Numbers"].str.replace('.','')
df["Numbers"]=df["Numbers"].str.replace(',','.')
df["Numbers"]=df["Numbers"].astype(float)

我得到:

Numbers
13264999.99
1028.10
nan
1100.1

怎么办?

piah890a

piah890a1#

好吧,我设法解决了这个问题:
所以首先我将每个值转换为字符串,然后将每个逗号替换为点。然后我留下最后一个点,这样数字就可以很容易地转换为浮点数:

df["Numbers"]=df["Numbers"].astype(str).str.replace(",", ".")
df["Numbers"]=df["Numbers"].str.replace(r'\.(?=.*?\.)', '')  
df["Numbers"]=df["Numbers"].astype(float)
jgwigjjp

jgwigjjp2#

如Anton vBR的注解所示,使用参数thousands='.',您将正确读取数据。

axkjgtzd

axkjgtzd3#

您可以尝试读取默认类型为字符串的excel

df=pd.read_excel('file.xlsx',dtype=str)

相关问题