#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
У меня есть несколько столбцов, которые содержат числовые данные с запятыми (например. число хранится как ‘4200’ и, следовательно, не читается как число) в базовом файле. Чтобы иметь возможность обрабатывать данные, мне нужно удалить эти запятые из нескольких столбцов данных.
import pandas as pd
import numpy as np
df = {'INR': ['4,200','5,000',0,'4,353','6,000',1],
'USD':['4,100','3,000','1,000','4,353','6,000',1]}
df = pd.DataFrame(df)
Если я напишу следующую строку кода, это сработает:
df['INR']=df['INR'].replace(',','').astype(int)
Но следующая строка кода не:
df[['INR','USD']]=df[['INR','USD']].replace(',','').astype(int)
Было бы здорово, если бы кто-нибудь мог помочь понять, почему
Комментарии:
1. Используйте
df[['INR','USD']].replace(',', '', regex=True)
Ответ №1:
На самом деле, когда вы вызываете df[['INR','USD']]
, его тип pd.DataFrame. У этого типа нет метода «.replace». только pd.Series с этим вызовом :
df['INR'].astype(str).str.replace(",", "").astype(int)
Не забывайте о .str.
В вашем случае используйте метод applymap, подобный этому :
df[['INR','USD']] = df[['INR','USD']].applymap(lambda x: int(str(x).replace(",","")))
Вы можете получить информацию о applymap здесь :
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas .DataFrame.applymap.html
Метод сокращения путем вывода типов (я предпочитаю не использовать метод сокращения, чтобы понять, что делает …) :
df[['INR','USD']] = df[['INR','USD']].replace(',', '', regex=True)