Ana içeriğe atla

Pandas'ta Sütunları Yeniden Adlandırma: Örneklerle Eksiksiz Rehber

pandas'ta .rename(), df.columns ve .set_axis() ile sütunları yeniden adlandırmayı; snake_case için Python fonksiyonlarını ve KeyError ile ValueError çözümlerini öğrenin.
Güncel 17 Ağu 2026  · 13 dk. oku

Yapay Zekâyla Keşfet

ChatGPTClaudePerplexity

Şirketinizin veritabanından taze bir CSV çekiyorsunuz, df.head() çalıştırıyorsunuz ve CUST_ID_NBR, txn_amt_usd_2, Unnamed: 7 ya da Customer Name (Full) adlı bir sütun görüyorsunuz — sondaki bir boşluk da cabası, ki onu bir KeyError öğleden sonranızı berbat edene kadar fark etmeyeceksiniz. Dağınık sütun adları gerçek veri işinin küçük sürtünmelerindendir ve genelde gerçek analize başlamadan önce yapacağınız ilk şey pandas’ta sütun yeniden adlandırma adımı olur.

Bu pandas’ta sütunları nasıl yeniden adlandıracağınızla ilgili eğitimde şunları öğreneceksiniz:

  • .rename() ile bir ya da birçok sütunun adını değiştirme

  • df.columns veya .set_axis() ile tüm sütun adlarını bir kerede değiştirme

  • isimleri topluca dönüştürmek için fonksiyon uygulama

  • .str erişicisiyle dağınık adları temizleme

  • pd.read_csv() içinde yükleme anında yeniden adlandırma

  • aynı görevleri Polars’ta ele alma

  • KeyError ve ValueError: Length mismatch hatalarına yakalanmaktan kaçınma

Bu eğitim, pandas’ı içe aktarabildiğinizi ve bir DataFrame oluşturabildiğinizi varsayar. Boyunca müşteri kayıtları, satış dışa aktarımları ve sensör okumaları gibi gerçekçi veri setleri kullanacağız; böylece kalıplar, gerçekte çalıştığınız veri türlerine doğrudan karşılık gelir.

Hangi Pandas Yeniden Adlandırma Yöntemini Seçmelisiniz?

Görevinizin kapsamına uyan yöntemi seçin: hedefli bir yeniden adlandırma, tam bir değiştirme veya her ada uygulanan bir kural.

Hedefiniz

Yöntem

Ne zaman uygun

Belirli bir ya da birkaç sütunun adını değiştirin

df.rename(columns={"old": "new"})

Diğer sütunlara dokunmaz; yöntem zincirleri içinde güvenlidir

Her sütun adını değiştirin

df.columns = [...] veya df.set_axis([...], axis=1)

Her bir ismi eşleştirmekten daha hızlı; zincirlemeniz gerektiğinde .set_axis() kullanın

Bir kurala göre yeniden adlandırın (küçük harf, snake_case, kırpma)

df.rename(columns=func) veya df.columns.str....

Her sütunu tek tek listelemek yerine kuralı bir kez ifade edin

Yükleme anında yeniden adlandırın

pd.read_csv(..., header=0, names=[...])

Şemayı siz kontrol ediyorsunuz ve ayrı bir adım istemiyorsunuz

Polars’ta yukarıdakilerin herhangi biri

df.rename({"old": "new"}), .alias() bir select içinde

Değiştirilemez ve zincir-öncelikli, bu yüzden inplace yok

.rename() ile Sütunların Adını Nasıl Değiştiririm?

.rename() yöntemi, bir pandas DataFrame sütun yeniden adlandırma işlemini yapmanın en esnek yoludur ve çoğu zaman başvuracağınız yöntem budur. 

Eski adları yeni adlara eşleyen bir sözlük alır, bahsetmediğiniz sütunlara dokunmaz ve varsayılan olarak özgün veriyi değiştirmek yerine yeni bir DataFrame döndürür. Bu da .rename()’i yöntem zincirleri içinde kullanmayı güvenli, hata ayıklarken ise düşünmeyi kolay kılar.

Sözlük kalıbı şöyle görünür:

sales_data.rename(columns={"old_name": "new_name"})

Sözlüklere yeniyseniz, tazeleme için Python sözlük metodları eğitimimize göz atmanızı öneririm.

Eski copy parametresi hakkında not

Örneklerden önce küçük bir not. Pandas 3.0 copy parametresini kullanımdan kaldırdı ve Copy-on-Write’ı varsayılan davranış yaptı. Pratikte bu, .rename()’in verinizin pahalı bir kopyasını yapıp yapmadığını dert etmenize gerek kalmadığı anlamına gelir. Pandas bunu perde arkasında tembel şekilde halleder. Üzerinde düşünmeniz gereken başlıca parametre ise inplace; onu da üçüncü alt bölümde ele alacağız.

Tek bir sütunun adını değiştirme

Diyelim ki eski bir CRM’den dışa aktarılmış müşteri kayıtlarını yüklediniz. Sütun adları, 2008’de veritabanını tasarlayan kişinin mantığına uygun kısaltılmış ama size değil. Bu en basit pandas sütun yeniden adlandırma işlemi: bir eski ad, bir yeni ad, bir sözlük içinde:

import pandas as pd

customers = pd.DataFrame({
    "cust_id_nbr": [4521, 4522, 4523, 4524],
    "first_nm": ["Abe", "Rick", "Pat", "Kim"],
    "signup_dt": ["2008-03-12", "2008-03-15", "2008-03-18", "2008-03-21"]
})

print(customers)

Python DataFrame

Şimdi, cust_id_nbr’ı daha okunur bir şeye yeniden adlandırın:

customers_renamed = customers.rename(columns={"cust_id_nbr": "customer_id"})
print(customers_renamed)

Python DataFrame

Orijinal customers DataFrame’i değişmedi. .rename() yeni bir DataFrame döndürdü; biz de bunu customers_renamed değişkenine atadık. Bahsetmediğimiz iki sütun (first_nm, signup_dt) aynen geldi.

Birden çok sütunun adını değiştirme

Sözlük doğal olarak ölçeklenir. Bir pandas çoklu sütun yeniden adlandırma görevini ele almak için eşlemeye daha fazla anahtar-değer çifti eklemeniz yeterli:

customers_clean = customers.rename(columns={
    "cust_id_nbr": "customer_id",
    "first_nm": "first_name",
    "signup_dt": "signup_date"
})

print(customers_clean)

Python DataFrame

Ayrıca columns anahtar sözcüğü yerine mapper ve axis argümanlarını kullanan alternatif bir sözdizimi de vardır:

customers.rename(mapper={"cust_id_nbr": "customer_id"}, axis=1)

axis=1, pandas’a hedefinizin sütunlar olduğunu söyler (axis=0 satır indeks etiketleri içindir). Her iki biçim de aynı sonucu üretir. Sahadaki kodların çoğu bir bakışta daha okunur olduğu için columns={...} kullanır; bu eğitimde de bu kalıba sadık kalacağız.

Faydalı bir ayrıntı: Var olmayan bir sütunla eşleşmeyen bir anahtar geçirirseniz, .rename() varsayılan olarak bunu sessizce yok sayar. Bu, şemaları biraz farklı olan DataFrame’leri işleyebilen, yeniden kullanılabilir bir fonksiyon yazarken kullanışlıdır; fakat yazım hatalarını da gizleyebilir. Bilinmeyen sütun adlarında pandas’ın hata vermesini istiyorsanız errors='raise' parametresini geçin.

inplace kullanımı ve yeni bir DataFrame döndürme

Varsayılan olarak .rename() yeni bir DataFrame döndürür ve orijinali olduğu gibi bırakır. Mevcut DataFrame’in doğrudan değiştirilmesini isterseniz inplace=True geçin:

# Yeni bir DataFrame döndürür (varsayılan)
customers_v2 = customers.rename(columns={"first_nm": "first_name"})

# customers'ı doğrudan değiştirir, None döndürür
customers.rename(columns={"first_nm": "first_name"}, inplace=True)

print(customers)

Python DataFrame

Peki hangisini kullanmalısınız? Çoğu durumda, yeni bir DataFrame döndüren varsayılan seçenek daha iyidir. Hata ayıklaması da daha kolaydır; bir şeyler ters gittiğinde inceleyebileceğiniz orijinal DataFrame elinizde olur. Ayrıca eski kodlarda SettingWithCopyWarning üreten örtük kopyalama sorunlarını da bertaraf eder.

Artık performans da inplace tercih etmek için gerçek bir sebep değil. Copy-on-Write, pandas 3.0+’da varsayılan; inplace olmayan sürüm tembel kopyalama kullanır. Veriniz gerçekten ancak bir şey değiştirildiğinde kopyalanır. inplace=True’ın belleği tasarruflu kullandığı yönündeki eski argüman artık çok daha zayıf.

inplace=True’ın hâlâ doğal geldiği tek yer, tek bir DataFrame’i adım adım temizlediğiniz ve zincirlemeyi umursamadığınız kısa, keşif amaçlı betiklerdir. Üretim kodunda ya da sonradan döneceğiniz her şeyde varsayılanı tercih edin.

Pandas’ta Tüm Sütunların Adını Bir Kerede Nasıl Değiştiririm?

Bazen eski adları yenilerine eşlemek istemezsiniz. Tüm sütun adlarını bir kerede değiştirmek istersiniz. Bu, düşündüğünüzden daha sık karşınıza çıkar: pandas’ın sütun adlarını 0, 1, 2 olarak atadığı başlıksız CSV’lerde, başlık satırının farklı bir dilde olduğu veri setlerinde ya da Field1, Field2, Field3 gibi adlar içeren sistem üretimi dışa aktarımlarda.

Bunu yapmanın iki yaygın yolu var: Doğrudan df.columns’a atama yapmak veya .set_axis() kullanmak. Aynı sonucu üretirler. Tercih, kısalık ile zincirlenebilirlik arasındadır.

df.columns’a bir liste atamak

En doğrudan yaklaşım, columns özniteliğine yeni bir liste atamaktır. Başlık bilgisi olmayan, başlıksız bir CSV okurken elde edeceğiniz türden, listelerin listesinden oluşturulmuş şu DataFrame’i ele alın. Pandas tamsayı sütun adlarına geri döner:

import pandas as pd

sensor_readings = pd.DataFrame([
    [1.2, 22.5, 1013],
    [1.5, 22.7, 1012],
    [1.3, 22.6, 1013]
])

print(sensor_readings)

Python DataFrame

Bu 0, 1 ve 2 sütun adları analiz için işe yaramaz. Onları, columns özniteliğine yeni bir ad listesi atayarak değiştirin:

sensor_readings.columns = ["wind_speed", "temperature_c", "pressure_hpa"]
print(sensor_readings)

Python DataFrame

Bu yaklaşımla ilgili iki şey bilin.

  1. Liste uzunluğu bire bir uyuşmalıdır. Dört sütunlu bir DataFrame’e üç ad geçirirseniz pandas ValueError: Length mismatch hatası verir (bu hatayı ileride ayrıntılı işleyeceğiz). 

  2. DataFrame’i yerinde değiştirir. Burada inplace parametresi yoktur çünkü atama işlemin kendisi değişikliktir. Taze bir kopya istiyorsanız önce .copy() kullanın ya da aşağıdaki .set_axis()’a başvurun.

Yöntem zincirleme için .set_axis() kullanmak

.set_axis() yöntemi aynı şeyi yapar ama yeni bir DataFrame döndürür; böylece diğer işlemlerle zincirleyebilirsiniz. Benzer, başlıksız bir DataFrame alın; bu kez fazladan ondalıklar ve eksik bir okuma gibi daha dağınık veriler olsun:

raw_sensor = pd.DataFrame([
    [1.234, 22.567, 1013],
    [1.512, 22.789, 1012],
    [None,  22.601, 1013],
    [1.345, 22.612, 1013]
])

sensor_clean = (
    raw_sensor
    .set_axis(["wind_speed_mps", "temp_celsius", "pressure_hpa"], axis=1)
    .round(1)
    .dropna()
)

print(sensor_clean)

Python DataFrame

axis=1 argümanı pandas’a sütun etiketlerini ayarladığınızı söyler (satır indeksini ayarlamak için axis=0 kullanın). .set_axis() yeni bir DataFrame döndürdüğü için gerçek ETL veya analiz kodlarında yazacağınız türden zincirli dönüşüm ardışık düzenlerine doğal olarak uyar. Üretimde doğrudan atamaya tercih edilmesinin ana nedeni budur.

Pandas’ta Fonksiyonlar Kullanarak Sütunların Adını Nasıl Değiştiririm?

Her eski adı yeniye eşlemek yerine, .rename()’e bir fonksiyon geçebilirsiniz; pandas bunu her sütun adına uygular. Listeniz değil, bir kuralınız olduğunda doğru araç budur. Örneğin “her şeyi küçük harfe çevir” ya da “her boşluğu alt çizgiyle değiştir.”

Yerleşik string fonksiyonlarını kullanmak

En basit durum, harf büyüklüğünü standartlaştırmadır. str.lower, str.upper veya str.title’ı doğrudan columns argümanına geçin:

import pandas as pd

orders = pd.DataFrame({
    "Order ID": [1001, 1002, 1003],
    "Customer Name": ["Abe", "Rick", "Pat"],
    "Total Amount": [49.99, 120.00, 75.50]
})

orders_lower = orders.rename(columns=str.lower)
print(orders_lower.columns.tolist())

Python sütun listesi

Burada fonksiyonun kendisini (str.lower) geçirdiğimize, onu çağırmadığımıza (str.lower()) dikkat edin. Pandas bunu her sütun adına tek tek uygular. Bu, harf büyüklüğü standardizasyonu için temiz bir kısayoldur ama boşlukları veya özel karakterleri ele almaz. Bunun için bir lambda ya da özel bir fonksiyon isteyeceksiniz.

Lambda ve özel fonksiyonları kullanmak

Harf büyüklüğü değişikliklerinin ötesindeki her şey için lambda, dönüşümü satır içinde ifade etmenin hızlı bir yolunu sunar. Lambdaları daha önce kullanmadıysanız, Python lambda fonksiyonları başlangıç rehberimiz iyi bir başlangıçtır.

Yaygın bir kalıp, tek adımda küçük harfe çevirme ve boşlukları alt çizgiyle değiştirmektir. Önceki örneği kullanıyoruz:

orders_snake = orders.rename(columns=lambda col: col.lower().replace(" ", "_"))
print(orders_snake.columns.tolist())

Python sütun listesi

Mantık daha karmaşıklaştığında, onu adlı bir fonksiyona çıkarın. camelCase veya PascalCase sütun adlarını snake_case’e dönüştüren şu yardımcıyı düşünün:

import re

def to_snake_case(name: str) -> str:
    """Convert camelCase or PascalCase to snake_case."""
    s1 = re.sub(r"(.)([A-Z][a-z]+)", r"\1_\2", name)
    s2 = re.sub(r"([a-z0-9])([A-Z])", r"\1_\2", s1)
    return s2.lower()

api_response = pd.DataFrame({
    "userId": [1, 2, 3],
    "firstName": ["Abe", "Rick", "Pat"],
    "accountCreatedAt": ["2024-01-01", "2024-01-02", "2024-01-03"]
})

api_clean = api_response.rename(columns=to_snake_case)
print(api_clean.columns.tolist())

Python sütun listesi

Bu tür adlı bir fonksiyon, zeki tek satırlıklardan daha kolay test edilir, not defterleri arasında yeniden kullanılabilir ve belgelenebilir. Mantık bir satıra sığıyorsa lambda; sığmıyorsa özel fonksiyon tercih edin.

Pandas’ta Dağınık Sütun Adlarını Toplu Hâlde Nasıl Temizlerim?

Veri elektronik tablolar, üçüncü taraf API’ler veya elle düzenlenmiş CSV’lerden geldiğinde, sütun adlarında yalnızca .rename() ile zarifçe çözülemeyecek sorunlar sık görülür. Şunlardan bahsediyorum:

  • Sondaki boşluk
  • Karışık harf büyüklüğü
  • Parantezler
  • Tireler
  • Özel karakterler
  • Görünmez Unicode karakterleri

Bu durumlar için en temiz yaklaşım, df.columns üzerinde doğrudan .str erişicisini kullanmaktır; bu, tek seferde tüm sütun adları üzerinde vektörleştirilmiş string metodlarını (regex dahil) sunar. Bu aynı zamanda sağlam Python’da veri temizleme temelleridir. Sütun adlarını temizlemek, sonraki tüm adımları (filtreleme, birleştirme, görselleştirme) daha az hataya açık hâle getirir.

Boşluk ve özel karakterleri kırpmak

Birçok elin değdiği bir Excel dışa aktarımından gelecek türde adlara sahip şu DataFrame’i ele alın:

import pandas as pd

raw_export = pd.DataFrame({
    "  Order ID ": [1001, 1002, 1003],
    "Customer Name (Full)": ["Abe", "Rick", "Pat"],
    "Total Amount ($)": [49.99, 120.00, 75.50],
    "Order-Date": ["2024-03-12", "2024-03-15", "2024-03-18"]
})

print(raw_export.columns.tolist())

Python sütun listesi

Ön ve son boşluklar en yaygın ve en sinir bozucu sorunlardır; çünkü görünmezler. Tek satırda kırpın:

raw_export.columns = raw_export.columns.str.strip()
print(raw_export.columns.tolist())

Python sütun listesi

Özel karakterler için .str.replace() bir regex deseni kabul eder. Aşağıdaki desen harfleri, sayıları, alt çizgileri ve boşlukları tutar, diğer her şeyi atar:

raw_export.columns = raw_export.columns.str.replace(r"[^a-zA-Z0-9_ ]", "", regex=True)
print(raw_export.columns.tolist())

Python sütun listesi

Tire, parantezler ve dolar işareti gitti. Dikkat edin, Total Amount artık sonda bir boşluk barındırıyor (önceden ($)’nin bulunduğu yerden) ve OrderDate tireyi tamamen kaybetti. İşte bu yüzden bir temizleme ardışık düzeninin sonunda yeniden kırpma yaparız.

snake_case’e standartlaştırma

Yaygın bir en iyi uygulama, analize başlamadan önce tüm sütun adlarını snake_case’e dönüştürmektir: küçük harf, alt çizgiyle ayrılmış sözcükler, özel karakter yok. .str metodlarını tek bir ifadede oraya varacak şekilde zincirleyin:

raw_export = pd.DataFrame({
    "  Order ID ": [1001, 1002, 1003],
    "Customer Name (Full)": ["Abe", "Rick", "Pat"],
    "Total Amount ($)": [49.99, 120.00, 75.50],
    "Order-Date": ["2024-03-12", "2024-03-15", "2024-03-18"]
})

raw_export.columns = (
    raw_export.columns
    .str.strip()                                  # baştaki/sondaki boşlukları kaldır
    .str.lower()                                  # her şeyi küçük harfe çevir
    .str.replace(r"[^a-z0-9]+", "_", regex=True)  # alfasayısal olmayanları alt çizgiye indirgeme
    .str.strip("_")                               # baştaki/sondaki alt çizgileri kaldır
)

print(raw_export.columns.tolist())

Python sütun listesi

Dört satır ve sütun adlarınız öngörülebilir, küçük harfli ve alt çizgiyle ayrılmış hâlde. Bu kalıbı bir yardımcı fonksiyon olarak kaydetmeye değer. Elinizde olduğunda kapıdan giren her dağınık DataFrame’e uygulayabilirsiniz. 

Çoğu zaman yeniden adlandırmayı sütun kaldırmayla da birleştirmek isteyeceksiniz. Bunun için pandas’ta sütun düşürme eğitimi bir sonraki adımı kapsar.

Pandas’ta Veriyi Yüklerken Sütun Adlarını Nasıl Değiştiririm?

Dosyayı yüklemeden önce farklı sütun adları isteyeceğinizi zaten biliyorsanız, yeniden adlandırmayı doğrudan pd.read_csv() içinde yapabilirsiniz. names parametresine bir ad listesi geçin ve pandas’a mevcut başlık satırını atlayıp yerine sizin adlarınızı kullanmasını söylemek için header=0 ayarlayın:

import pandas as pd
from io import StringIO

# Gösterim için bir CSV dosyası simülasyonu
csv_data = """txnId,custId,amt,date
1001,C01,49.99,2024-01-15
1002,C02,125.00,2024-01-16
1003,C01,79.50,2024-01-17"""

# Orijinal başlığı atlayarak yükleme anında sütunları yeniden adlandırır
transactions = pd.read_csv(
    StringIO(csv_data),
    header=0,
    names=["transaction_id", "customer_id", "amount_usd", "transaction_date"]
)
print(transactions)

Python DataFrame

Şemayı kontrol ettiğiniz ve yükleme kodunuzu bir .rename() adımıyla kalabalıklaştırmak istemediğinizde bu kullanışlı bir kestirmedir. Dosyada hiç başlık satırı yoksa header=0’ı atlayın ve baştan sütun adları atamak için sadece names=[...] kullanın. Yükleme seçeneklerine daha derin bakmak için pandas read_csv() eğitimini öneririm.

Bir uyarı: Bu, ya hep ya hiç yaklaşımıdır. names parametresi her sütun adını değiştirir; bu nedenle listenin uzunluğu dosyadaki sütun sayısıyla bire bir eşleşmelidir. Yalnızca birkaç sütunu yeniden adlandırmak istiyorsanız önce dosyayı yükleyin ve ardından .rename() kullanın.

Bu kalıpların diğer yaygın temizlik görevleriyle birlikte adım adım uygulamalı anlatımı için Cleaning Data in Python kursumuzu tavsiye ederim.

Polars ve Pandas’ta Sütunları Yeniden Adlandırma

Hem pandas hem de Polars ile çalışıyorsanız ya da çalışmayı umuyorsanız, her birinin sütun yeniden adlandırmayı nasıl ele aldığını bilmeye değer. Üst düzey API benzerdir; fakat ayrıntılar, ilk birkaç seferde sizi şaşırtacak şekilde ayrışır. Polars, modern veri yığınlarında giderek yaygınlaşan, hızlı, Rust destekli bir DataFrame kütüphanesidir ve pandas’ta edindiğiniz kas hafızası her zaman pürüzsüzce aktarılmaz.

Ana fikir aynıdır. Eski adları yeni adlara bir sözlükle eşlersiniz. Farklar ayrıntılardadır. Polars tasarım gereği değiştirilemezdir (inplace yoktur), yöntem zincirleme idomatiktir ve bir seçim sırasında sütun düzeyinde yeniden adlandırma, ayrı bir yeniden adlandırma adımı yerine .alias() kullanır.

Yan yana karşılaştırma

Görev

Pandas

Polars

Belirli sütunları yeniden adlandır

df.rename(columns={"old": "new"})

df.rename({"old": "new"})

Tüm sütun adlarını değiştir

df.columns = [...] veya df.set_axis([...], axis=1)

df.rename(dict(zip(df.columns, [...])))

Bir select sırasında yeniden adlandır

Önce seç, sonra .rename()

df.select(pl.col("old").alias("new"))

Yerinde değiştirme

inplace=True desteklenir

Desteklenmez. Her zaman yeni bir DataFrame döner

İdomatik stil

inplace veya zincirleme

Daima zincirleme

Aynı yeniden adlandırma, iki kütüphanede

Karşılaştırma için, iki kütüphanede de basit bir yeniden adlandırma örneği:

Pandas:

# Pandas
import pandas as pd

orders_pd = pd.DataFrame({
    "ord_id": [1001, 1002, 1003],
    "cust_nm": ["Abe", "Rick", "Pat"]
})

orders_pd = orders_pd.rename(columns={"ord_id": "order_id", "cust_nm": "customer_name"})
print(orders_pd)

Python DataFrame

Polars:

# Polars
import polars as pl

orders_pl = pl.DataFrame({
    "ord_id": [1001, 1002, 1003],
    "cust_nm": ["Abe", "Rick", "Pat"]
})

orders_pl = orders_pl.rename({"ord_id": "order_id", "cust_nm": "customer_name"})
print(orders_pl)

Python DataFrame

Dikkat edilecek iki küçük fark. Polars’ın .rename()’i sözlüğü doğrudan alır. columns= anahtar sözcüğü yoktur çünkü Polars yalnızca sütunların yeniden adlandırılmasını destekler (satır indeksi yok). Ve sonucu yeniden atamak zorundasınız. Polars’ta inplace=True yoktur. Her işlem yeni bir DataFrame döndürür.

Polars çıktısı ayrıca veri tiplerini satır içinde (i64, str) ve üstte şekli gösterir; bu da geçtiğinizde insanların genelde sevdiği küçük yaşam kalitesi şeylerinden biridir. 

Bir select sırasında sütunları yeniden adlandırma

Bir dönüşüm sırasında yeniden adlandırma için, Polars .select() veya .with_columns() içinde .alias() kullanır:

# Polars
import polars as pl

orders_pl = pl.DataFrame({
    "ord_id": [1001, 1002, 1003],
    "cust_nm": ["Abe", "Rick", "Pat"]
})

# Tek ifadede seç ve yeniden adlandır
renamed = orders_pl.select(
    pl.col("ord_id").alias("order_id"),
    pl.col("cust_nm").alias("customer_name")
)

print(renamed)

Python DataFrame

pandas’ta eşdeğeri, bir sütun seçiminden sonra .rename() olurdu. Hiçbiri daha iyi değildir. Her ikisi de kütüphanelerin tasarım felsefesini yansıtır. 

İki kütüphanenin daha derin bir karşılaştırmasını isterseniz pandas ve polars performans eğitimini tavsiye ederim. Ve polars’ı araç setinize eklemek isterseniz Introduction to Polars kursumuzu öneririm. 

Yaygın Hatalar ve Çözümleri

pandas sütunlarını yeniden adlandırırken iki hata tekrar tekrar karşımıza çıkar. Nasıl göründükleri, neden oldukları ve nasıl düzeltileceği aşağıda.

KeyError: sütun adı bulunamadı

Varsayılan olarak .rename(), mevcut bir sütunla eşleşmeyen anahtarları sessizce yok sayar. Ancak yazım hatalarını yakalamak için errors='raise' geçirirseniz, anahtar yoksa bir KeyError alırsınız:

import pandas as pd

orders = pd.DataFrame({
    "order_id": [1001, 1002, 1003],
    "customer_name": ["Abe", "Rick", "Pat"]
})

# Bu bir hata verir
orders.rename(columns={"Order_ID": "order_id"}, errors="raise")

KeyError

En yaygın neden, harf büyüklüğü duyarlılığındaki bir kaymadır (Order_ID ile order_id) veya görünmez sondaki bir boşluk ("order_id " ile "order_id"). Bir KeyError’a çarptığınızda sırasıyla üç şeyi kontrol edin:

  1. Kesin yazım ve harf büyüklüğü
  2. Gizli boşluklar
  3. Sütunun daha önce zaten yeniden adlandırılıp adlandırılmadığı

Gerçek sütun adlarını doğrulamak için:

print(orders.columns.tolist())

# Alternatif olarak repr() kullanın
print([repr(c) for c in orders.columns])

Python sütun listesi

Pandas’ın elinde tuttuğu tam dizeleri gördüğünüzde yazım hatası genelde barizdir. Ardından yazımı düzeltin ve yeniden çalıştırın:

orders = orders.rename(columns={"order_id": "Order_ID"}, errors="raise")
print(orders.columns.tolist())

Python sütun listesi

Şimdi soru şu: Ne zaman errors='raise', ne zaman varsayılan errors='ignore' kullanılmalı? 

  • Varsayılan hoşgörülüdür. Şemaları değişken DataFrame’leri işleyen ve eksik bir sütunun hiçbir şeyi çökertmemesi gereken betiklerde kullanışlıdır. 

  • Özellikle sessiz hataların saatlerce kafa karışıklığına yol açtığı not defterlerinde, yazım hatalarının geliştirme sırasında yüksek sesle ortaya çıkmasını istediğinizde errors='raise'’a geçin.

ValueError: df.columns ile uzunluk uyumsuzluğu

Bir listeyi df.columns’a atadığınızda veya .set_axis() kullandığınızda, listenin uzunluğu sütun sayısıyla bire bir eşleşmelidir. Eşleşmezse pandas bir ValueError verir:

import pandas as pd

products = pd.DataFrame({
    "sku": ["A100", "A101", "A102"],
    "name": ["Widget", "Gadget", "Gizmo"],
    "price": [9.99, 14.99, 19.99]
})

# Bu bir hata verir
products.columns = ["product_sku", "product_name"]

ValueError

DataFrame’in üç sütunu var ama yalnızca iki yeni ad sağlandı. Çözüm, atama yapmadan önce sütun sayısını kontrol etmektir:

print(len(products.columns))
products.columns = ["product_sku", "product_name", "product_price"]
print(products.columns.tolist())

Python sütun listesi

Sütun sayısının değişebildiği DataFrame’lerle çalışıyorsanız, bir sözlükle .rename() kullanmak daha güvenlidir. Yalnızca adını verdiğiniz sütunlara dokunur; eksik ya da fazladan bir sütun kodunuzu çökertmez.

Son Düşünceler

pandas’ta sütunları yeniden adlandırmak, görevinizin kapsamına uyan yöntemi seçmeye dayanır. Hangi yaklaşıma başvurursanız başvurun, en büyük pratik kazanım tek bir adlandırma kuralında karar kılmak ve her analizin ilk adımında bunu uygulamaktır. Python kodlarının çoğunda snake_case kullanılır. Temiz sütun adları başta birkaç saniyeye mal olur ama projenin geri kalanında sizi KeyError sürprizlerinden korur.

.rename()’i hedefli yeniden adlandırmalar için sözlükle kullanın. Her sütunun yeni bir ada ihtiyacı olduğunda, df.columns’a atama yapmak veya .set_axis() kullanmak, her eski-yeni eşlemesini içeren bir sözlük kurmaktan daha hızlıdır. Ve eğer yeniden adlandırma boşluk kırpma, her şeyi küçültme, camelCase dönüştürme gibi bir kurala uyuyorsa, bir fonksiyon geçirmek ya da .str erişicisini kullanmak, durumları tek tek saymak yerine kuralı bir kez ifade etmenizi sağlar. Polars benzer bir API ile aynı işi halleder; ancak değiştirilemez, zincir-öncelikli tarzı sizi farklı alışkanlıklara yöneltir. 

DataFrame becerilerinizi geliştirmeye devam etmek için bir sonraki adım olarak Data Manipulation with pandas kursunu öneririm. Yapılandırılmış bir öğrenme yolu isterseniz, Data Analyst in Python kariyer yolu DataFrame manipülasyonunu analist araç takımıyla birlikte kapsar.

Pandas’ta Sütunları Yeniden Adlandırma Hakkında SSS

pandas'ta bir sütunun adını nasıl değiştiririm?

Birden fazla yöntem vardır, ancak en basit olanı df = df.rename(columns={"old_name": "new_name"}) kullanmaktır. DataFrame'i doğrudan değiştirmek için inplace=True argümanını da geçebilirsiniz.

pandas'ta birden çok sütunu nasıl yeniden adlandırırım?

pandas'ta birden çok sütunun adını değiştirmek için tüm yeniden adları tek bir sözlükte geçin: df.rename(columns={"old1": "new1", "old2": "new2"})

Bir pandas DataFrame'indeki tüm sütunların adını nasıl değiştiririm?

df.columns'a yeni adlardan oluşan bir liste atayın. Dikkat: Liste uzunluğunun sütun sayısıyla eşleştiğinden emin olun; aksi hâlde bir ValueError alırsınız.

Neden df.rename() DataFrame'imi değiştirmiyor?

Varsayılan olarak .rename() yeni bir DataFrame döndürür. Sonucu df = df.rename(...) ile geri atayın ya da inplace=True kullanın.

pandas'ta sütun adlarını küçük harfe nasıl çeviririm?

Tüm sütun adlarını tek adımda küçük harfe çevirmek için df.columns = df.columns.str.lower() kullanın.


Author
Rajesh Kumar
LinkedIn

Ben bir veri bilimi içerik yazarıyım. YZ/ML/DS konuları etrafında içerik üretmeyi seviyorum. Ayrıca yeni YZ araçlarını keşfediyor ve onlar hakkında yazıyorum.

Konular

DataCamp ile Python Öğrenin!

Kurs

pandas ile Veri İşleme

4 sa
559.2K
pandas ile verileri içe aktarmayı ve temizlemeyi, istatistikleri hesaplamayı ve görselleştirmeler oluşturmayı öğrenin.
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

Devamını GörDevamını Gör