【问题标题】:how to replace the comma in numbers in dataframe by dot?如何用点替换数据框中数字中的逗号?
【发布时间】:2022-11-19 02:38:38
【问题描述】:

我有这个数据框,我希望用点替换所有逗号,例如它是 50.5 和 81.5。

   Unnamed: 0    NB Ppt Resale  5 yrs 10 yrs 15 yrs 20 yrs
1        VLCC   120         114    87     64   50,5     37
3     SUEZMAX  81,5          80    62     45     36     24
5        LR 2    69          72    57     42     32     20
7     AFRAMAX    66          68    55   40,5   30,5     19
9        LR 1    58          58    40     28     21   13,5
11        MR2    44        44,5    38     29     21     13

由于所有列的数据类型都是对象,我试过了

df_useful[['NB', 'Ppt Resale ', '5 yrs', '10 yrs', '15 yrs',
       '20 yrs']] = df_useful[['NB', 'Ppt Resale ', '5 yrs', '10 yrs', '15 yrs',
              '20 yrs']].apply(pd.to_numeric, errors='coerce')

那么带逗号的数字将变为 NAN

【问题讨论】:

  • 如果您使用read_csv 加载数据,还有decimal 参数您可以设置为逗号。

标签: python pandas dataframe


【解决方案1】:

一个简单的方法:

out = df.replace(',', '.', regex=True)

输出:

   Unnamed: 0    NB Ppt Resale  5 yrs 10 yrs 15 yrs 20 yrs
1        VLCC   120        114     87     64   50.5     37
3     SUEZMAX  81.5         80     62     45     36     24
5        LR 2    69         72     57     42     32     20
7     AFRAMAX    66         68     55   40.5   30.5     19
9        LR 1    58         58     40     28     21   13.5
11        MR2    44       44.5     38     29     21     13

如果您的目标是自动转换为数字,您可以使用:

df2 = (df
  .drop(columns='Unnamed: 0')
  .select_dtypes(exclude='number')
  .apply(lambda s: pd.to_numeric(s.str.replace(',', '.'),
                                  errors='coerce')) 
)
df[list(df2)] = df2

输出:

   Unnamed: 0     NB Ppt Resale  5 yrs 10 yrs 15 yrs 20 yrs
1        VLCC  120.0      114.0     87   64.0   50.5   37.0
3     SUEZMAX   81.5       80.0     62   45.0   36.0   24.0
5        LR 2   69.0       72.0     57   42.0   32.0   20.0
7     AFRAMAX   66.0       68.0     55   40.5   30.5   19.0
9        LR 1   58.0       58.0     40   28.0   21.0   13.5
11        MR2   44.0       44.5     38   29.0   21.0   13.0

数据类型:

print(df.dtypes)

Unnamed: 0     object
NB            float64
Ppt Resale    float64
5 yrs           int64
10 yrs        float64
15 yrs        float64
20 yrs        float64
dtype: object

【讨论】:

    猜你喜欢
    • 2021-05-17
    • 1970-01-01
    • 2013-06-23
    • 2018-08-11
    • 2020-10-29
    • 1970-01-01
    • 2016-09-05
    • 2018-07-06
    相关资源
    最近更新 更多