Metin sütunlarını verimli bir şekilde birleştirmek, veri manipülasyonunda çok önemli bir görevdir. Bu makale, bir DataFrame içindeki dize sütunlarını birleştirmek için beş etkili Pandas yöntemini sunmakta, güçlü ve zayıf yönlerini vurgulayarak belirli ihtiyaçlarınız için en uygun yaklaşımı seçmenizde size rehberlik etmektedir.
İçindekiler Tablosu:
- + Operatörü Yöntemi
- Series.str.cat() Yöntemi
- df.apply() Yöntemi
- Series.map() Yöntemi
- df.agg() Yöntemi
+ Operatörü Yöntemi
Bu basit yaklaşım, dize birleştirme için Python’ın yerleşik +
operatörünü kullanır. Genellikle basit senaryolar için en hızlı yöntemdir ancak TypeError
istisnalarından kaçınmak için eksik değerlerin (NaN) dikkatlice ele alınmasını gerektirir.
import pandas as pd
import numpy as np
data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)
df['combined'] = df['col1'].fillna('') + df['col2'].fillna('')
print(df)
Çıktı:
col1 col2 combined
0 A D AD
1 B E BE
2 C F CF
3 NaN G G
Series.str.cat() Yöntemi
Series.str.cat()
özellikle dize birleştirme için tasarlanmıştır ve eksik verileri verimli bir şekilde işler. Ayırıcılar ve NaN gösterimi ile özelleştirmeye olanak tanır.
import pandas as pd
import numpy as np
data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)
df['combined'] = df['col1'].str.cat(df['col2'], sep='-', na_rep='')
print(df)
Çıktı:
col1 col2 combined
0 A D A-D
1 B E B-E
2 C F C-F
3 NaN G -G
df.apply() Yöntemi
df.apply()
, satır bazlı (axis=1
) veya sütun bazlı (axis=0
) işlemler için esneklik sunar ve karmaşık birleştirme mantığına olanak tanır. Bununla birlikte, büyük DataFrame’ler için +
operatöründen daha az verimli olabilir.
import pandas as pd
import numpy as np
data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)
df['combined'] = df.apply(lambda row: str(row['col1']) + ' ' + str(row['col2']), axis=1)
print(df)
Çıktı:
col1 col2 combined
0 A D A D
1 B E B E
2 C F C F
3 NaN G nan G
Series.map() Yöntemi
Series.map()
, koşullu mantık veya belirli ayırıcılar gibi çeşitli senaryoları ele alan birleştirme için özel işlevler uygulamanın esnek bir yolunu sağlar. Daha karmaşık birleştirme kuralları için özellikle kullanışlıdır.
import pandas as pd
import numpy as np
data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)
def combine_strings(x):
return str(x[0]) + '_' + str(x[1])
df['combined'] = df[['col1', 'col2']].apply(combine_strings, axis=1)
print(df)
Çıktı:
col1 col2 combined
0 A D A_D
1 B E B_E
2 C F C_F
3 NaN G nan_G
df.agg() Yöntemi
Öncelikle toplamalar için olsa da, df.agg()
dize birleştirme için uyarlanabilir. Bununla birlikte, bu özel amaç için diğer yöntemlerden genellikle daha az verimlidir.
import pandas as pd
import numpy as np
data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)
df['combined'] = df.agg(lambda x: str(x['col1']) + ' ' + str(x['col2']), axis=1)
print(df)
Çıktı (df.apply()
ile benzer):
col1 col2 combined
0 A D A D
1 B E B E
2 C F C F
3 NaN G nan G
Sonuç: En uygun yöntem, belirli ihtiyaçlarınıza ve veri kümesi boyutunuza bağlıdır. Temel birleştirme için +
operatörü hız sunar. Series.str.cat()
eksik değerleri verimli bir şekilde işlemekte mükemmeldir. Series.map()
ve df.apply()
karmaşık senaryolar için daha fazla esneklik sağlar, df.agg()
ise bu görev için daha az verimlidir.