Concat столбцы Dataframe в Python? - PullRequest
       1

Concat столбцы Dataframe в Python?

1 голос
/ 16 октября 2019

У меня есть кадр данных, сгенерированный с кодом, приведенным ниже:

# importing pandas as pd 
import pandas as pd 

# Create the dataframe 
df = pd.DataFrame({'Category':['A', 'B', 'C', 'D'], 
                   'Event':['Music Theater', 'Poetry Music', 'Theatre Comedy', 'Comedy Theatre'], 
                   'Cost':[10000, 5000, 15000, 2000]}) 

# Print the dataframe 
print(df) 

Я хочу, чтобы был сгенерирован список, объединяющий все три столбца, а также удалявшие пробелы с помощью символа "_" и удаляя также все конечные пробелы: -

[A_Music_Theater_10000, B_Poetry_Music_5000,C_Theatre_Comedy_15000,D_Comedy_Theatre_2000]

Я хочу сделать это наиболее оптимизированным способом, так как время выполнения - проблема для меня. Так что старайтесь избегать петель. Кто-нибудь может сказать мне, как я могу добиться этого наиболее оптимизированным способом?

1 Ответ

1 голос
/ 16 октября 2019

Наиболее общим решением является преобразование всех значений в строки, используйте join и последнее replace:

df['new'] = df.astype(str).apply('_'.join, axis=1).str.replace(' ', '_')

Если необходимо отфильтровать только некоторые столбцы:

cols = ['Category','Event','Cost']
df['new'] = df[cols].astype(str).apply('_'.join, axis=1).str.replace(' ', '_')

Илиобработка каждого столбца отдельно - при необходимости replace, а также преобразование числового столбца в строки:

df['new'] = (df['Category'] + '_' + 
             df['Event'].str.replace(' ', '_') + '_' + 
             df['Cost'].astype(str))

Или после преобразования в строки добавьте _, sum, но необходимо после замены удалить талинг _rstrip:

df['new'] = df.astype(str).add('_').sum(axis=1).str.replace(' ', '_').str.rstrip('_')

print(df) 
  Category           Event   Cost                     new
0        A   Music Theater  10000   A_Music_Theater_10000
1        B    Poetry Music   5000     B_Poetry_Music_5000
2        C  Theatre Comedy  15000  C_Theatre_Comedy_15000
3        D  Comedy Theatre   2000   D_Comedy_Theatre_2000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...