读取拼花文件时如何将小数点格式从点更改为逗号?

How to change the decimal format from dot to comma when reading parquet files?

我正在使用 parquet 文件,为了阅读它们,我正在使用 pd.read_parquet()。但是,文件中的数值使用逗号,这是对数字的误解。

如何将小数点的符号从点改为逗号?

这是我的一段代码:

new_col = pa.parquet.read_table(filepath).to_pandas()
aux = pd.concat([aux, new_col])

df.head()

                      X_Principal  Y_Principal  value_main  \
ts                                                                     
2016-01-27 15:15:00             1.0             4.0        11.020800   
2016-01-27 15:15:00             1.0             4.0        11.020800   
2016-01-27 15:15:00             1.0             4.0        36.408001   
2016-01-27 15:15:00             1.0             4.0        36.408001   
2016-01-27 15:30:00             1.0             4.0        12.004800 

type(new_col)

<class 'pandas.core.frame.DataFrame'>  

例如,列值中的数字应该类似于 110.20800。

Parquet 是一种二进制文件格式。您的镶木地板已将浮点数存储为字符串,并以逗号作为分隔符。所以你的parquet文件中的格式已经错误,没有space解释(即pandas没有"misunderstand"任何东西)。

您可以自己解析包含数字字符串表示形式的列,并使用逗号作为小数点分隔符,例如

df['col'] = pd.to_numeric(df['col'].str.replace(',','.'))

让我们做一些最小的可重复实验。

让我们准备一些数据:

In [1]: df = pd .DataFrame({"a":["1,1", "1,2"],"b":[1,2]})                                                         

In [2]: df.to_parquet("./df.parquet", compression="GZIP") 

让我们看看我们到底有什么:

18:48:29 delete$ parquet-cat df.parquet 
a = 1,1
b = 1

a = 1,2
b = 2

然后,让我们读取数据并将关注的列转换为浮点数:

In [8]: df1 = pd.read_parquet("./df.parquet")                                                                                          

In [9]: df1                                                                                                                            
Out[9]: 
     a  b
0  1,1  1
1  1,2  2

In [10]: df1.a.str.replace(",",".").astype("float64")                                                                                  
Out[10]: 
0    1.1
1    1.2
Name: a, dtype: float64

如您所见,它正在处理带有逗号小数的镶木地板文件。

PS

您添加到问题中的数据与问题本身并不完全一致。我认为您应该使用 parquet-tool 等工具更仔细地调查镶木地板文件中的内容,看看它是否正确读取。