Bir dataframe'de "Rs." ile başlayan bir para birimi karşıma çıktı. Rs. (hint rupisi) benim için önemsiz olduğundan bu ilk üç karakteri kırpmam lazım. Karakterleri kırpma işini şuradaki ilk satırla yapıyorum:
Ama karakterleri kırpmak string'i nümerik hale getirmek anlamına gelmiyor ve kolon bu nedenle kategorik değişken olarak görünüyor. Dolayısıyla bunu ayrıca sayısal değişken haline getirmem lazım.
Bunu da şu kodla yapıyorum. Dikkat edilmesi gereken kısım ".astype(float)" kısmı. Bunu yazmayınca hata veriyor. (ValueError: invalid literal for int () with base 10)
Böylece bu kısmı hallediyoruz. Bunun sayısal değişkene döndüğünü görmek için num_cols ve cat_cols belirleyici kodunu tekrar çalıştırıyorum.
Ve num_cols'u kontrol edip "Loan_Approved_Gross_New" kolonunun dönüştüğünü görüyorum.
Bir de tarih (date) kolonu string olarak girildiğinden, object türünde görünüyor. Bunu da ikinci satırdaki kodla "date" türüne çeviriyorum:
Kodlar:data_train['Gross_Amount_Balance_New'] = data_train['Gross_Amount_Balance'].str[3:]
data_train['Date_Of_Disbursement_New'] = pd.to_datetime(data_train['Date_Of_Disbursement'])
data_train['Loan_Approved_Gross_New'] = data_train['Loan_Approved_Gross_New'].astype(float).astype(int)
# group cat and num cols
from sklearn.compose import make_column_selector as selector
num_cols_selector = selector(dtype_exclude=object)
cat_cols_selector = selector(dtype_include=object)
num_cols = num_cols_selector(data_train)
cat_cols = cat_cols_selector(data_train)
cat_cols=data_train.select_dtypes(include=['object']).columns
for column in cat_cols:
print("For column:",column)
print(data_train[column].unique())
print('-'*50)
Kaynaklar:
StackOverflow - Pandas make new column from string slice of another column
String'i tarih türüne çevirme: SparkByExamples