Replace comma with dot Pandas

前端 未结 2 1910
野趣味
野趣味 2020-12-02 21:18

Given the following array, I want to replace commas with dots:

array([\'0,140711\', \'0,140711\', \'0,0999\', \'0,0999\', \'0,001\', \'0,001\',
       \'0,14         


        
相关标签:
2条回答
  • 2020-12-02 21:26

    You need to assign the result of your operate back as the operation isn't inplace, besides you can use apply or stack and unstack with vectorised str.replace to do this quicker:

    In [5]:
    df.apply(lambda x: x.str.replace(',','.'))
    
    Out[5]:
              1-8        1-7
    H0   0.140711   0.140711
    H1     0.0999     0.0999
    H2      0.001      0.001
    H3   0.140711   0.140711
    H4   0.140711   0.140711
    H5   0.140711   0.140711
    H6          0          0
    H7          0          0
    H8   0.140711   0.140711
    H9   0.140711   0.140711
    H10  0.140711  0.1125688
    H11  0.140711  0.1125688
    H12  0.140711  0.1125688
    H13  0.140711  0.1125688
    H14  0.140711   0.140711
    H15  0.140711   0.140711
    H16  0.140711   0.140711
    H17  0.140711   0.140711
    H18  0.140711   0.140711
    H19  0.140711   0.140711
    H20  0.140711   0.140711
    H21  0.140711   0.140711
    H22  0.140711   0.140711
    H23  0.140711   0.140711
    
    In [4]:    
    df.stack().str.replace(',','.').unstack()
    
    Out[4]:
              1-8        1-7
    H0   0.140711   0.140711
    H1     0.0999     0.0999
    H2      0.001      0.001
    H3   0.140711   0.140711
    H4   0.140711   0.140711
    H5   0.140711   0.140711
    H6          0          0
    H7          0          0
    H8   0.140711   0.140711
    H9   0.140711   0.140711
    H10  0.140711  0.1125688
    H11  0.140711  0.1125688
    H12  0.140711  0.1125688
    H13  0.140711  0.1125688
    H14  0.140711   0.140711
    H15  0.140711   0.140711
    H16  0.140711   0.140711
    H17  0.140711   0.140711
    H18  0.140711   0.140711
    H19  0.140711   0.140711
    H20  0.140711   0.140711
    H21  0.140711   0.140711
    H22  0.140711   0.140711
    H23  0.140711   0.140711
    

    the key thing here is to assign back the result:

    df = df.stack().str.replace(',','.').unstack()

    0 讨论(0)
  • 2020-12-02 21:26

    If you are reading in with read_csv, you can specify how it interprets decimals with the decimal parameter.

    e.g.

    your_df = pd.read_csv('/your_path/your_file.csv',sep=';',decimal=',')
    

    From the man pages:

    thousands : str, optional Thousands separator.

    decimal : str, default ‘.’ Character to recognize as decimal point (e.g. use ‘,’ for European data).

    0 讨论(0)
提交回复
热议问题